JP2016536692A - コンピュータ画像処理パイプライン - Google Patents

コンピュータ画像処理パイプライン Download PDF

Info

Publication number
JP2016536692A
JP2016536692A JP2016532759A JP2016532759A JP2016536692A JP 2016536692 A JP2016536692 A JP 2016536692A JP 2016532759 A JP2016532759 A JP 2016532759A JP 2016532759 A JP2016532759 A JP 2016532759A JP 2016536692 A JP2016536692 A JP 2016536692A
Authority
JP
Japan
Prior art keywords
memory
processing
access
slice
processing elements
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
JP2016532759A
Other languages
English (en)
Other versions
JP2016536692A5 (ja
JP6571078B2 (ja
Inventor
デイヴィッド モロニー,
デイヴィッド モロニー,
リチャード リッチモンド,
リチャード リッチモンド,
デイヴィッド ドノホー,
デイヴィッド ドノホー,
ブレンダン バリー,
ブレンダン バリー,
コーマック ブリック,
コーマック ブリック,
オヴィディウ, アンドレイ ベサ,
オヴィディウ, アンドレイ ベサ,
Original Assignee
デイヴィッド モロニー,
デイヴィッド モロニー,
リチャード リッチモンド,
リチャード リッチモンド,
デイヴィッド ドノホー,
デイヴィッド ドノホー,
ブレンダン バリー,
ブレンダン バリー,
コーマック ブリック,
コーマック ブリック,
オヴィディウ, アンドレイ ベサ,
オヴィディウ, アンドレイ ベサ,
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
Priority claimed from GBGB1314263.3A external-priority patent/GB201314263D0/en
Priority claimed from ROA201300812A external-priority patent/RO129804A0/ro
Application filed by デイヴィッド モロニー,, デイヴィッド モロニー,, リチャード リッチモンド,, リチャード リッチモンド,, デイヴィッド ドノホー,, デイヴィッド ドノホー,, ブレンダン バリー,, ブレンダン バリー,, コーマック ブリック,, コーマック ブリック,, オヴィディウ, アンドレイ ベサ,, オヴィディウ, アンドレイ ベサ, filed Critical デイヴィッド モロニー,
Publication of JP2016536692A publication Critical patent/JP2016536692A/ja
Publication of JP2016536692A5 publication Critical patent/JP2016536692A5/ja
Application granted granted Critical
Publication of JP6571078B2 publication Critical patent/JP6571078B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • G09G5/397Arrangements specially adapted for transferring the contents of two or more bit-mapped memories to the screen simultaneously, e.g. for mixing or overlay
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/126The frame memory having additional data ports, not inclusive of standard details of the output serial port of a VRAM

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)
  • Memory System (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

本出願は一般に、並列処理装置に関するものである。並列処理装置は、複数の処理要素と、メモリ・サブシステムと、相互接続システムとを含むことができる。メモリ・サブシステムは複数のメモリ・スライスを含むことができ、そのうちの少なくとも1つは複数の処理要素のうちの1つと関連して、複数のランダム・アクセス・メモリ(RAM)タイルを備え、各タイルは個々の読み出し及び書き込みポートを有する。相互接続システムは、複数の処理要素及びメモリ・サブシステムを結合するように構成される。相互接続システムは、ローカル相互接続及びグローバル相互接続を含む。【選択図】図1

Description

関連出願の相互参照
本出願は、2013年11月18日に出願された、名称が「APPARATUS, SYSTEMS, AND METHODS FOR PROVIDING COMPUTATIONAL IMAGING PIPELINE」であるU.S. Patent Application No. 14/082,396のより早い優先日の利益を主張し、この出願は、2013年11月6に出願された、名称が「APPARATUS, SYSTEMS, AND METHODS FOR PROVIDING CONFIGURABLE AND COMPOSABLE COMPUTATIONAL IMAGING PIPELINE」であるRomanian Patent Application OSIM Registratura A/00812、及び、2013年8月8日に出願された、名称が「CONFIGURABLE AND COMPOSABLE COMPUTATIONAL IMAGING PIPELINE」であるU.K. Patent Application No. GB1314263.3に対する優先権を主張している。本出願はまた、2013年11月18日に出願された、名称が「APPARATUS, SYSTEMS, AND METHODS FOR PROVIDING CONFIGURABLE COMPUTATIONAL IMAGING PIPELINE」であるU.S. Patent Application No. 14/082,645のより早い優先日の利益も主張し、この出願は、2013年11月6に出願された、名称が「APPARATUS, SYSTEMS, AND METHODS FOR PROVIDING CONFIGURABLE AND COMPOSABLE COMPUTATIONAL IMAGING PIPELINE」であるRomanian Patent Application OSIM Registratura A/00812、及び、2013年8月8日に出願された、名称が「CONFIGURABLE AND COMPOSABLE COMPUTATIONAL IMAGING PIPELINE」であるU.K. Patent Application No. GB1314263.3に対する優先権を主張している。上記出願のそれぞれは、ここで参照することにより本明細書に完全に組み込まれる。
本出願は一般に、画像及び映像処理に好適な処理装置に関するものである。
コンピュータによる画像及び映像処理は、画像解像度及びフレームレートが高く、1秒あたり数百メガピクセルの総計ピクセル・レートが一般的な桁であるため、メモリ帯域幅の点で非常に要求が厳しい。さらにまた、この分野は比較的、初期の段階であるため、アルゴリズムは絶えず変化している。したがって、アルゴリズムの変更はハードウェアが適合できないことを意味する可能性があるため、ハードウェアにそれらを完全に実装することは困難である。同時に、プロセッサのみへの実装に依存するソフトウェア・アプローチは、非現実的である。したがって、プロセッサ及びハードウェア・アクセラレータに対応できる、柔軟なアーキテクチャ/インフラストラクチャを提供することが一般に望ましい。
同時に、このような映像及び画像処理に対する要求は、大部分は、タブレット・コンピュータ及び携帯機器などの携帯型電子装置から来ており、消費電力が主要な考慮事項である。結果として、プログラム可能なマルチコア・プロセッサ及びハードウェア・アクセラレータを、携帯型電子装置に必要な低電力レベルでの持続データ転送レートの実現を可能とする高帯域幅メモリ・サブシステムと結合する、柔軟なインフラストラクチャに対する一般的な必要性がある。
本開示の主題に従って、設定可能かつ構成可能なコンピュータ画像処理パイプラインを提供する機器、システム、及び方法が提供される。
開示される主題は、並列処理装置を含む。処理装置は、命令を実行するようにそれぞれ構成される複数の処理要素と、複数の処理要素のうちの1つと関連する第1のメモリ・スライスを含む複数のメモリ・スライスを備えるメモリ・サブシステムとを含む。第1のメモリ・スライスは、それぞれ個々の読み出し及び書き込みポートを有する複数のランダム・アクセス・メモリ(RAM)タイルを備える。並列処理装置は、複数の処理要素とメモリ・サブシステムとを結合するように構成される相互接続システムを含むことができる。相互接続システムは、第1のメモリ・スライスと複数の処理要素のうちの1つとを結合するように構成されるローカル相互接続と、第1のメモリ・スライスと複数の処理要素のうちの残りとを結合するように構成されるグローバル相互接続とを含むことができる。
いくつかの実施形態において、複数のRAMタイルのうちの1つは調停ブロックと関連し、ここで、調停ブロックは、複数の処理要素うちの1つからのメモリ・アクセス要求を受けるように、かつ、複数の処理要素のうちの1つに、複数のRAMタイルうちの1つへのアクセスを許可するように構成される。
いくつかの実施形態において、調停ブロックは、ラウンドロビン方式で複数のRAMタイルのうちの1つへのアクセスを許可するように構成される。
いくつかの実施形態において、調停ブロックは、複数のRAMタイルのうちの1つへのメモリ・アクセス要求をモニタし、複数の処理要素のうちの2つ以上が同時に複数のRAMタイルのうちの1つにアクセスしようとしているかどうかを判定するように構成される衝突検出器を備える。
いくつかの実施形態において、衝突検出器は、複数のアドレス・デコーダに結合され、ここで、複数のアドレス・デコーダのそれぞれが、複数の処理要素のうちの1つに結合されて、複数の処理要素のうちの1つが調停ブロックと関連する複数のRAMタイルのうちの1つにアクセスしようとしているかどうかを判定するように構成される。
いくつかの実施形態において、複数の処理要素は、少なくとも1つのベクトル・プロセッサと、少なくとも1つのハードウェア・アクセラレータとを備える。
いくつかの実施形態において、並列処理装置は、複数のメモリ・スライスのうちの1つへのアクセスを提供するようにそれぞれ構成される複数のメモリ・スライス・コントローラを含む。
いくつかの実施形態において、相互接続システムは、少なくとも1つのベクトル・プロセッサとメモリ・サブシステムとの間の通信を提供するように構成される第1のバスを備える。
いくつかの実施形態において、相互接続システムは、少なくとも1つのハードウェア・アクセラレータとメモリ・サブシステムとの間の通信を提供するように構成される第2のバス・システムを備える。
いくつかの実施形態において、第2のバス・システムは、少なくとも1つのハードウェア・アクセラレータからのメモリ・アクセス要求を受けることによって、かつ、メモリ・サブシステムへのアクセスを、少なくとも1つのハードウェア・アクセラレータに許可することによって、少なくとも1つのハードウェア・アクセラレータとメモリ・サブシステムとの間の通信を仲介するように構成されるスライス・アドレス要求フィルタを備える。
いくつかの実施形態において、複数の処理装置のうちの1つは、メモリ・サブシステムのスループットを増加させるためのバッファを備え、ここで、バッファの要素の数は、メモリ・サブシステムからデータを検索するためのサイクルの数より大きい。
開示される主題は、並列処理システムを作動させる方法を含む。方法は、第1の処理要素と第2の処理要素とを含む複数の処理要素を提供することを含み、ここで、複数の処理要素のそれぞれは、命令を実行するように構成される。方法はまた、第1の処理要素と関連する第1のメモリ・スライスを含む複数のメモリ・スライスを備えるメモリ・サブシステムを提供することを含み、ここで、第1のメモリ・スライスは、それぞれ個々の読み出し及び書き込みポートを有する複数のランダム・アクセス・メモリ(RAM)タイルを備える。方法は、相互接続システムのローカル相互接続を介した複数のRAMタイルのうちの1つと関連する調停ブロックによって、第1の処理要素から第1のメモリ・アクセス要求を受けることをさらに含む。方法は、グローバル相互接続を介した調停ブロックによって、第1の処理要素に複数のRAMタイルのうちの1つにアクセスする権限を付与するために、第1の処理要素に第1の権限付与メッセージを送ることをさらに含む。
いくつかの実施形態において、方法は、相互接続システムのグローバル相互接続を介した調停ブロックによって、第2の処理要素から第2のメモリ・アクセス要求を受けることと、グローバル相互接続を介した調停ブロックによって、第2の処理要素に複数のRAMタイルのうちの1つにアクセスする権限を付与するために、第2の処理要素に第2の権限付与メッセージを送ることとをさらに含む。
いくつかの実施形態において、方法は、調停ブロックによって、ラウンドロビン方式で複数のRAMタイルのうちの1つへアクセスする権限を付与するために、複数の処理要素に複数の権限付与メッセージを送ることをさらに含む。
いくつかの実施形態において、方法は、調停ブロックの衝突検出器によって、複数のRAMタイルのうちの1つへのメモリ・アクセス要求をモニタすることと、複数の処理要素の2つ以上が同時に複数のRAMタイルのうちの1つにアクセスしようとしているかどうかを判定することとをさらに含む。
いくつかの実施形態において、複数の処理要素は、少なくとも1つのベクトル・プロセッサと、少なくとも1つのハードウェア・アクセラレータとを備える。
いくつかの実施形態において、方法は、複数のメモリ・スライスのうちの1つへのアクセスを提供するようにそれぞれ構成される複数のメモリ・スライス・コントローラを提供することをさらに含む。
いくつかの実施形態において、方法は、相互接続システムの第1のバス・システムを介した、少なくとも1つのベクトル・プロセッサとメモリ・サブシステムとの間の通信を提供することをさらに含む。
いくつかの実施形態において、方法は、相互接続システムの第2のバス・システムを介した、少なくとも1つのハードウェア・アクセラレータとメモリ・サブシステムとの間の通信を提供することをさらに含む。
いくつかの実施形態において、第2のバス・システムは、少なくとも1つのハードウェア・アクセラレータからのメモリ・アクセス要求を受けることによって、かつ、メモリ・サブシステムへのアクセスを、少なくとも1つのハードウェア・アクセラレータに許可することによって、少なくとも1つのハードウェア・アクセラレータとメモリ・サブシステムとの間の通信を仲介するように構成されるスライス・アドレス要求フィルタを備える。
開示される主題は、電子装置を含む。電子装置は、並列処理装置を含む。処理装置は、命令を実行するようにそれぞれ構成される複数の処理要素と、複数の処理要素のうちの1つと関連する第1のメモリ・スライスを含む複数のメモリ・スライスを備えるメモリ・サブシステムとを含む。第1のメモリ・スライスは、それぞれ個々の読み出し及び書き込みポートを有する複数のランダム・アクセス・メモリ(RAM)タイルを備える。並列処理装置は、複数の処理要素とメモリ・サブシステムとを結合するように構成される相互接続システムを含むことができる。相互接続システムは、第1のメモリ・スライスと複数の処理要素のうちの1つとを結合するように構成されるローカル相互接続と、第1のメモリ・スライスと複数の処理要素のうちの残りとを結合するように構成されるグローバル相互接続とを含むことができる。電子装置はまた、並列処理装置と通信し、メモリに格納されるモジュールを実行するように構成されるプロセッサを含む。モジュールは、データ処理プロセスと関連するフロー・グラフを受けるように構成され、ここで、フロー・グラフは、複数のノードと、複数のノードのうちの2つ以上を連結する複数のエッジとを備え、各ノードは動作を識別し、各エッジは連結されたノード間の関係を識別する。さらに、モジュールは、複数のノードのうちの第1のノードを並列処理装置の第1の処理要素に割り当て、複数のノードのうちの第2のノードを並列処理装置の第2の処理要素に割り当てるように構成され、それによって、第1のノード及び第2のノードと関連する動作を並列化する。
いくつかの実施形態において、フロー・グラフは、拡張可能なマーク付け言語(XML)フォーマットで提供される。
いくつかの実施形態において、モジュールは、複数のノードのうちの第1のノードを、並列処理装置のメモリ・サブシステムの過去のパフォーマンスに基づいて、第1の処理要素に割り当てるように構成される。
いくつかの実施形態において、並列処理装置のメモリ・サブシステムは、所定の期間のメモリ衝突回数をカウントするように構成されるカウンタを備え、メモリ・サブシステムの過去のパフォーマンスは、カウンタによって計測されるメモリ衝突回数を備える。
いくつかの実施形態において、モジュールは、複数のノードのうちの第1のノードを第1の処理要素に割り当てるように構成され、一方、並列処理装置は、フロー・グラフの少なくとも一部を作動させている。
いくつかの実施形態において、モジュールは、複数のフロー・グラフを受けて、複数のフロー・グラフと関連するすべての動作を並列処理装置の単一の処理要素に割り当てるように構成される。
いくつかの実施形態において、モジュールは、処理要素によるメモリ・アクセスをずらして、メモリ衝突を減少させるように構成される。
いくつかの実施形態において、電子装置は、携帯機器を備える。
いくつかの実施形態において、フロー・グラフは、並列処理装置と関連するアプリケーション・プログラミング・インタフェース(API)を使用して指定される。
いくつかの実施形態において、モジュールは、入力画像データをストリップに分割し、入力画像データの1つのストリップを複数の処理要素のうちの1つに提供することによって、入力画像データを複数の処理要素に提供するように構成される。
いくつかの実施形態において、入力画像データのストリップの数は、複数の処理要素の数と同じである。
開示される主題は、方法を含む。方法は、並列処理装置と通信するプロセッサで、データ処理プロセスと関連するフロー・グラフを受けることを含み、フロー・グラフは、複数のノードと、複数のノードのうちの2つ以上を連結する複数のエッジとを備え、各ノードは動作を識別し、各エッジは連結されたノードの関係を識別する。方法はまた、
複数のノードのうちの第1のノードを並列処理装置の第1の処理要素に割り当てること
と、複数のノードのうちの第2のノードを並列処理装置の第2の処理要素に割り当てることとを含み、それによって、第1のノード及び第2のノードと関連する動作を並列化する。並列処理装置はまた、第1の処理要素と関連する第1のメモリ・スライスを含む複数のメモリ・スライスを備えるメモリ・サブシステムを含み、ここで、第1のメモリ・スライスは、それぞれ個々の読み出し及び書き込みポートを有する複数のランダム・アクセス・メモリ(RAM)タイルと、第1の処理要素、第2の処理要素、及びメモリ・サブシステムを結合するように構成される相互接続システムとを備える。相互接続システムは、第1のメモリ・スライス及び第1の処理要素を結合するように構成されるローカル相互接続と、第1のメモリ・スライス及び第2の処理要素を結合するように構成されるグローバル相互接続とを含む。
いくつかの実施形態において、複数のノードのうちの第1のノードを並列処理装置の第1の処理要素に割り当てることは、複数のノードのうちの第1のノードを並列処理装置の第1のメモリ・スライスの過去のパフォーマンスに基づいて第1の処理要素に割り当てることを含む。
いくつかの実施形態において、方法はまた、メモリ・サブシステムのカウンタで、所定の期間にわたる第1のメモリ・スライスにおけるメモリ衝突回数をカウントすることを含み、第1のメモリ・スライスの過去のパフォーマンスは、第1のメモリ・スライスにおけるメモリ衝突回数を備える。
いくつかの実施形態において、複数のノードのうちの第1のノードを第1の処理要素に割り当てることが行われ、一方、並列処理装置は、フロー・グラフの少なくとも一部を作動させている。
いくつかの実施形態において、方法はまた、メモリ衝突を減少させるために、処理要素による第1のメモリ・スライスへのメモリ・アクセスをずらすことを含む。
いくつかの実施形態において、フロー・グラフは、並列処理装置と関連するアプリケーション・プログラミング・インタフェース(API)を使用して指定される。
いくつかの実施形態において、方法はまた、入力画像データを複数のストリップに分割し、入力画像データの複数のストリップのうちの1つを複数の処理要素のうちの1つに提供することによって、入力画像データを複数の処理要素に提供することを含む。
いくつかの実施形態において、入力画像データの複数のストリップの数は、複数の処理要素の数と同じである。
開示される主題のさまざまな目的、特徴、及び利点は、同様の参照番号が同様の要素を示す以下の図面に関連して検討すると、開示される主題の以下の詳細な説明に関してより完全に理解することができる。
Chimeraのコンピュータ顔像処理プラットフォームを説明する。 Cellプロセッサのマルチコア・アーキテクチャを説明する。 効率的な低電力マイクロプロセッサ(ELM)アーキテクチャを説明する。 いくつかの実施形態による改善されたメモリ・サブシステムを示す。 いくつかの実施形態による並列処理装置のセクションを示す。 いくつかの実施形態によるタイル制御ロジックの集中型衝突検出システムを示す。 いくつかの実施形態によるタイル制御ロジックの分散型衝突検出システムを示す。 いくつかの実施形態による衝突信号をリクエスタに報告するための調停ブロックを示す。 いくつかの実施形態によるサイクル指向調停ブロックを示す。 いくつかの実施形態によるメモリ・アクセス調停に起因したメモリ・アクセス・レイテンシを減少させるためのメカニズムを示す。 いくつかの実施形態によるスケジューリング・ソフトウェアのアプリケーションを示す。 いくつかの実施形態による並列処理装置を有するシステムの階層的な構成を提供する。 いくつかの実施形態による、有向非巡回グラフ(DAG)またはフロー・グラフの記述が並列処理装置の動作を制御するために使用できる方法を示す。 一実施形態による、コンパイラ及びスケジューラによるタスクのスケジューリング及び発行を示す。 一実施形態による、コンパイラ及びスケジューラによるタスクのスケジューリング及び発行を示す。 いくつかの実施形態によるリアルタイムDAGコンパイラの動作を示す。 OpenCLスケジューラによって生成されるスケジュールを、いくつかの実施形態による提案されたオンラインDAGスケジューラによって生成されるスケジュールと比較する。 いくつかの実施形態による、プロセッサ及び/またはフィルタ・アクセラレータの動作を同期させるためのバリア・メカニズムを示す。 いくつかの実施形態による、異なるタイプの処理要素を有する並列処理装置を示す。 いくつかの実施形態による、提案されたマルチコア・メモリ・サブシステムを示す。 いくつかの実施形態による、接続マトリクス(CMX)インフラストラクチャの単一のスライスを示す。 いくつかの実施形態による、アクセラレータ・メモリ・コントローラ(AMC)Crossbarアーキテクチャを示す。 いくつかの実施形態によるAMCクロスバー・ポート・コントローラを示す。 いくつかの実施形態による、AMCを使用する読み出し動作を示す。 いくつかの実施形態による、AMCを使用する書き込み動作を示す。 いくつかの実施形態による並列処理装置を示す。 いくつかの実施形態による並列処理装置を含む電子装置を示す。
以下の説明において、開示される主題の詳細な理解を提供するために、多数の特定の詳細が、開示される主題のシステム及び方法、ならびに、そのようなシステム及び方法を作動させてもよい環境などに関して説明される。しかし、開示される主題はこのような特定の詳細なしに実施されてもよく、当該技術分野において既知である特定の機能は、開示される主題における主題の複雑化を回避するために、詳細に説明されないことは当業者にとって明らかであろう。さらに、以下で提供される実施例は例示的なものであり、開示される主題の範囲内であるその他のシステム及び方法があることが意図されていることが理解されよう。
このような異なる処理リソース(たとえば、プロセッサ及びハードウェア・アクセラレータ)を相互に連結させる1つの可能な方法は、NVidiaによって開発されたChimeraのコンピュータ・フォトグラフィ・エンジンにおいて概説されるようなバスを使用することである。図1は、Chimeraのコンピュータ・フォトグラフィ・エンジンを示す。Chimeraコンピュータ・フォトグラフィ・エンジン100は、フラットレベル・バス・インフラストラクチャ108(たとえば、すべての処理要素を連結する単一階層バス・システム)を介してマルチコアARMプロセッサ・サブシステム104及びハードウェア(HW)画像信号処理(ISP)アクセラレータ106に連結される複数のグラフィック処理ユニット(GPU)コア102を含む。Chimeraコンピュータ・フォトグラフィ・エンジンは一般に、基礎をなすGPUコア102、CPU104、及びISPブロック106の詳細をプログラマから分離するソフトウェア・フレームワークとして表される。さらにまた、Chimeraコンピュータ・フォトグラフィ・エンジン100は、2台の情報バス108−0、108−1を介するコンピュータ・フォトグラフィ・エンジンを通るデータフロー、画像またはフレーム・データを搬送する第1のバス108−0、及び、各フレームと関連する状態情報を搬送する第2のバス108−1を記述する。
フラットレベル・バス・インフラストラクチャの使用は、Chimeraの場合のように、安価で、実装に便利である可能性がある。しかし、フラットレベル・バス・インフラストラクチャの使用は、GPUコア102、CPU104、及びISPブロック106などの異種の処理要素(たとえば、さまざまなタイプの処理要素)を相互連結する手段として、多数の著しい不利益を有する可能性がある。第1に、計算資源を相互連結するバスの使用は、メモリが、各中央処理装置(CPU)104、グラフィック処理装置(GPU)102、及び/または画像信号プロセッサ(ISP)ブロック106に対してローカルなシステムの隅々に分散される可能性があることを意味する。したがって、プログラマが実装したいコンピュータ・フォトグラフィ・パイプラインの要件に従って、メモリを処理パイプライン内で柔軟に割り当てることができない。この柔軟性の欠如は、特定の画像または映像処理が実装困難または実装不可能である、あるいは、フレームレート、画像品質、またはその他の点で実施態様が制限されることを意味することがある。
第2に、フラットレベル・バス・インフラストラクチャの使用はまた、それぞれの計算資源(CPU104、GPU102、及びISPブロック106)がバス帯域幅を求めて争わなければならないことも意味する。この争いは調停を必要とし、それは利用可能なバス帯域幅の量を減少させる。したがって、実際の作業に利用可能である理論的な帯域幅は徐々に小さくなる。帯域幅の減少は、処理パイプラインが、フレームレート、画像品質、及び/または電力の点で、アプリケーションのパフォーマンス要件を満たすことができないことを意味することがある。
第3に、特定の計算資源に近いメモリの不足は、データを、所定のGPU102、CPU104、またはハードウェアISPブロック106と関連するメモリと、別の計算資源との間を行き来するように転送しなければならないことを意味することがある。この局所性の欠如は、バス帯域幅の追加及び調停のオーバヘッドを招く可能性があることを意味する。さらにまた、局所性の欠如は電力をさらに消費することも意味する。したがって、特定のターゲット・フレームレートで特定のアルゴリズムをサポートすることは、困難または不可能であることがある。
第4に、フラットレベル・バス・インフラストラクチャの使用はまた、それぞれが異なるレイテンシ特性を有することがある異種の処理要素からパイプラインを構築することをより困難にすることがある。たとえば、GPUコア102は、レイテンシを補うために、メモリ(通常、外部DRAM)への複数の顕著なアクセスを取り扱う複数の重なり合うプロセス・スレッドを実行することによってレイテンシを許容するように設計されており、その一方で、通常のCPU104及びハードウェアISPブロック106は、レイテンシを許容するようには設計されていない。
異なる処理リソースを相互連結する別の方法は、IBMによって開発されたCellプロセッサアーキテクチャによって提供され、それは図2に示される。Cellプロセッサアーキテクチャ200は、各プロセッサ204に利用可能なローカル・ストレージ(LS)202を含み、相乗的実行ユニット(SXU)としても知られている。Cellプロセッサ200は、時分割されたインフラストラクチャに基づき、ダイレクト・メモリ・アクセス(DMA)206は、1つのプロセッサのLS202と別のプロセッサのLS202との間のデータ転送をプログラム的にスケジュール化するように転送する。Cellアーキテクチャ200に関する困難さは、必要なときに共有データを各プロセッサ204が利用可能であることを保証するように、(Cellアーキテクチャ200の高いレイテンシのために)バックグラウンド・データ転送を数百サイクルも事前に明確にスケジュール化するための、プログラマが直面する複雑さである。プログラマがバックグラウンド・データ転送を明確にスケジュール化しない場合、プロセッサ204はストールし、それによりパフォーマンスは低下する。
異なる処理リソースを相互連結する別の方法は、共有マルチコア・メモリ・サブシステムを使用し、マルチコア処理システムのプロセッサ間で効率的にデータを共有することである。この共有マルチコア・メモリ・サブシステムは、効率的な低電力マイクロプロセッサ(ELM)システムで使用される。図3は、ELMシステムを示す。ELMシステム300は、ELMシステムにおける計算リソースの主要な物理設計ユニットである、アンサンブル302を含む。アンサンブル302は、疎結合される4つのプロセッサ304のクラスタを含む。4つのプロセッサ304のクラスタは、アンサンブル・メモリ306及び相互接続ネットワークへのインタフェースなどのローカル・リソースを共有する。アンサンブル・メモリ306は、プロセッサ304の近くに命令及びデータ・ワーキングセットを取り込み、ローカル・プロセッサ304及びネットワークインタフェース・コントローラが同時にそれにアクセスすることを可能とするように積み上げられる。アンサンブル302内の各プロセッサ304は、アンサンブル・メモリ306の好ましいバンクを割り当てられる。プロセッサ304によるその好ましいバンクへのアクセスは、その他のプロセッサ及びネットワークインタフェースによるアクセスより優先される(かつ、アクセスをブロックする)。単一のプロセッサ304に対してプライベートな命令及びデータを、その好ましいバンクに格納して、決定論的なアクセス時間を提供してもよい。読み出し及び書き込みポートへのアクセスを制御するアービタは、プロセッサ304とメモリ・バンク306との間の親和性を確立するためにバイアスされる。これにより、ソフトウェアが、マルチ・プロセッサによって共有されてもよいデータにアクセスするときに、帯域幅の可用性及びレイテンシについてより強い仮定を作ることが可能になる。
しかし、ELMアーキテクチャ300は、物理的に大きなランダム・アクセス・メモリ(RAM)ブロックのために、多くの電力を消費する可能性がある。さらにまた、ELMアーキテクチャ300は、多くのデータ共有がプロセッサ304間にあることによりスループットが低くなる可能性がある。さらに、プロセッサ304とハードウェア・アクセラレータとの間でデータ共有には対応しておらず、それは特定の場合において、電力及びパフォーマンスに関して好適である可能性がある。
本開示は、マルチ・プロセッサ及びハードウェア・アクセラレータが、その他のプロセッサ及びハードウェア・アクセラレータと同時に共有データにアクセスすることを可能にする機器、システム、及び方法に関するものである。本開示は、ローカル・ストレージにアクセスするためのより高い親和性(たとえば、より高い優先度)を有するローカル・プロセッサによってブロックされることなく、共有データに同時にアクセスするための機器、システム、及び方法を提供する。
開示される機器、システム、及び方法は、既存のマルチコア・メモリ・アーキテクチャについての実質的な利益を提供する。既存のマルチコア・メモリ・アーキテクチャは、プロセッサごとにRAMの単一のモノリシック・ブロックを使用し、それはデータがアクセスできる帯域幅を制限する可能性がある。開示されるアーキテクチャは、RAMの単一のモノリシック・ブロックを使用する既存のマルチコア・メモリ・アーキテクチャと比較して、実質的により高い帯域幅でメモリにアクセスするためのメカニズムを提供することができる。開示されたアーキテクチャは、プロセッサごとに単一の大きいRAMブロックをインスタンス化する代わりに、プロセッサごとに複数の物理RAMブロックをインスタンス化することによって、このより高い帯域幅を得る。各RAMブロックは、専用アクセス調停ブロック及び周辺インフラストラクチャを含む可能性がある。したがって、メモリ・サブシステムの各RAMブロックは、システムの複数の処理要素、たとえば、ベクトル・プロセッサ、縮小命令セットコンピューティング(RISC)プロセッサ、ハードウェア・アクセラレータ、またはDMAエンジンによって、他とは独立してアクセスされる可能性がある。
単一の大きいRAMインスタンスに基づくメモリ・バンクは複数のより小さいRAMインスタンスに基づくメモリ・バンクより効率的な面積であるため、複数の小さいRAMインスタンスの使用が単一の大きいRAMインスタンスを使用することと比較して有益であることは、いささか直観と反することである。しかし、より小さいRAMインスタンスの電力散逸は通常、単一の大きいRAMインスタンスのものよりかなり低い。さらにまた、仮に単一の大きい物理RAMインスタンスが複数インスタンスRAMブロックと同じ帯域幅を実現するとしたならば、単一の大きい物理RAMインスタンスは、複数の物理RAMインスタンスから成るものより実質的に高い電力となるであろう。したがって、少なくとも電力散逸の見込みからは、メモリ・サブシステムは、単一の大きいRAMインスタンスを使用することよりも、複数の物理RAMインスタンスを使用することから利益を得ることができる。
より小さいRAMブロックのRAMアクセスごとのコスト、たとえば、メモリ・アクセス時間または電力消費が通常、より大きいRAMブロックのコストよりはるかに低いという点で、複数の物理RAMインスタンスを有するメモリ・サブシステムは、さらなる利点を有する可能性がある。これは、RAMからデータを読み出し/書き込みするために使用されるビット線がより短いためである。さらにまた、より小さいRAMブロックの読み出し及び書き込みのためのアクセス時間もより短い(より短いビット線と関連する抵抗−キャパシタンス(RC)時定数が減少するため)。したがって、マルチRAMベースのメモリ・サブシステムに結合される処理要素は、より高い周波数で作動させることが可能であり、それは次に、スタティック・リーク電流によるスタティック電力を減少させる。特にプロセッサ及びメモリが電力領域に分離されるときに、これは有効である可能性がある。たとえば、所定のプロセッサまたはフィルタ・アクセラレータがそのタスクを完了したとき、所定のプロセッサまたはフィルタ・アクセラレータと関連する電力領域を有利にはゲートオフすることができる。したがって、開示されるアーキテクチャのメモリ・サブシステムは、利用可能帯域幅及び電力散逸に関して優れた特性を有する。
さらに、それぞれ調停されたアクセスを受ける、複数のRAMインスタンスを有するメモリ・サブシステムは、RAMブロックをロックすることによってRAMブロックを特定のプロセッサ専用とすることなく、プロセッサとハードウェア・アクセラレータとの間でデータを共有する多くの方法を提供することができる。原則として、より大きいRAMがN個のサブブロックにさらに分割される場合、利用可能なデータ帯域幅は約N倍に増加する。これは、データを、複数の処理要素による同時共有(たとえば、アクセス衝突)を減少させるために適切に分割することができるという仮定に基づく。たとえば、コンシューマ・プロセッサまたはコンシューマ・アクセラレータが、プロデューサ・プロセッサまたはプロデューサ・アクセラレータにより占められているデータバッファからデータを読み込むとき、データバッファの同時共有があり、結果としてアクセス衝突となる。
いくつかの実施形態において、開示されるアーキテクチャは、データの同時共有を減少させるメカニズムを提供することができる。特に、開示されるアーキテクチャは、静的メモリ割当てメカニズム及び/または動的メモリ割当てメカニズムを介した同時共有を減少させるために適用することができる。たとえば、静的メモリ割当てメカニズムにおいて、データは、データの同時共有を減少させるために、プログラムの開始前、たとえばプログラムのコンパイル段階で、メモリの異なる部分にマッピングされる。他方で、動的メモリ割当てスキームにおいて、データは、プログラム実行中に、メモリの異なる部分にマッピングされる。静的メモリ割当てメカニズムは、メモリをデータに割り当てるための予測可能なメカニズムを提供し、それは、電力またはパフォーマンスに関して任意の実質的なオーバヘッドを発生しない。
別の実施例として、開示されるアーキテクチャは、複数のRAMブロックに分割されるデータ構造へのアクセスを仲介するコントローラ(たとえば、統括RISCプロセッサ)あるいは1つまたは複数のプロセッサで実行するランタイム・スケジューラとともに使用されることが可能である。ランタイム・スケジューラは、共有データへの同時アクセスを減少させるために、データ(たとえば、画像フレーム)の部分(たとえば、ラインまたはタイル)上で作動する異なる処理要素の起動時間をずらすように構成することができる。
いくつかの実施形態において、ランタイム・スケジューラは、ハードウェア調停ブロックで補完することができる。たとえば、ハードウェア調停ブロックは、ストールを減少させるように設計された共有決定論的相互接続を介して、プロセッサ(ベクトル・プロセッサなど)による共有メモリ・アクセスを仲介するように構成されることが可能である。いくつかの場合において、ハードウェア調停ブロックは、サイクル指向スケジューリングを行うように構成されることが可能である。サイクル指向スケジュール化は、タスク・レベルの粒度でリソースの使用をスケジュール化することとは対照的に、クロック・サイクルの粒度でリソースの使用をスケジュール化することを含むことができ、それは複数のクロック・サイクルを必要としてもよい。クロック・サイクルの粒度でリソース割当てをスケジュール化することにより、より高いパフォーマンスを提供することができる。
他の実施形態において、ランタイム・スケジューラは、それぞれがデータを格納するための入力バッファ及び出力バッファを含むことができる多数のハードウェア・アクセラレータで補完することができる。入出力バッファは、外部メモリなどの外部リソースへのアクセス時の遅延の差異を吸収(または隠す)ように構成することができる。入出力バッファは、先入先出方式(FIFO)バッファを含むことが可能であり、FIFOバッファは、外部リソースへのアクセス時の遅延の差異の吸収に十分なデータ量及び/または命令を格納するために、十分な数のスロットを含むことができる。
いくつかの実施形態において、開示される機器、システム、及び方法は、並列処理装置を提供する。並列処理装置は、並列プロセッサなどの複数のプロセッサを含むことが可能であり、そのそれぞれが命令を実行することができる。並列処理装置はまた、複数のメモリ・スライスを含むことが可能であり、各メモリ・スライスは、並列処理装置のうちの1つと関連し、並列処理装置のその他の処理装置にそのプロセッサへの優先アクセスを与える。各メモリ・スライスは、複数のRAMタイルを含むことが可能であり、各RAMタイルは、読み出しポート及び書き込みポートを含むことが可能である。いくつかの場合において、各メモリ・スライスには、関連するメモリ・スライスへのアクセスを提供するためのメモリ・スライス・コントローラが設けられる場合がある。プロセッサ及びRAMタイルは、バスを介して互いに結合されることが可能である。いくつかの場合において、バスは、任意のプロセッサを任意のメモリ・スライスに結合することができる。好適には、各RAMタイルは、タイルへのアクセスを許可するためのタイル制御ロジック・ブロックを含むことが可能である。タイル制御ロジック・ブロックは、タイル制御ロジックまたは調停ブロックと呼ばれることもある。
いくつかの実施形態において、並列処理装置は、既定の処理関数、たとえば、画像処理を行うように構成される少なくとも1つのハードウェア・アクセラレータをさらに含むことが可能である。いくつかの場合において、既定の処理関数は、フィルタリング動作を含むことが可能である。
いくつかの実施形態において、少なくとも1つのハードウェア・アクセラレータは、独立したバスを介してメモリ・スライスに結合されることが可能である。独立したバスは、関連するアクセラレータ・メモリ・コントローラ(AMC)を含むことが可能であり、それは、少なくとも1つのハードウェア・アクセラレータから要求を受けて、関連するメモリ・スライス・コントローラを通してのメモリ・スライスへのアクセスをハードウェア・アクセラレータに許可するように構成される。よって、ハードウェア・アクセラレータで採用されるメモリ・アクセス経路は、ベクトル・プロセッサで採用される経路と異なる可能性があることが理解されるであろう。いくつかの実施形態において、少なくとも1つのハードウェア・アクセラレータは、メモリ・スライスへのアクセス時の遅延に対応する内部バッファ(たとえば、FIFOメモリ)を含むことが可能である。
いくつかの実施形態において、並列処理装置は、ホスト・プロセッサを含むことが可能である。ホスト・プロセッサは、ホスト・バスを介してAMCと通信するように構成することが可能である。また、並列処理装置には、アプリケーション・プログラミング・インタフェース(API)を設けることが可能である。APIは、ベクトル・プロセッサ及び/またはハードウェア・アクセラレータへの高レベルのインタフェースを提供する。
いくつかの実施形態において、並列処理装置は、並列処理装置に命令を提供するコンパイラとともに作動することができる。いくつかの場合において、コンパイラは、ベクトル・プロセッサまたはハードウェア・アクセラレータなどの処理要素とは異なるホスト・プロセッサ上で実行されるように構成される。いくつかの場合において、コンパイラは、画像/映像API1206(図12)を介してフロー・グラフを受けるように構成され、画像処理プロセスを指定する。コンパイラは、フロー・グラフの1つまたは複数の態様を、ベクトル・プロセッサまたはハードウェア・アクセラレータなどの処理要素のうちの1つまたは複数にマッピングするようにさらに構成することが可能である。いくつかの実施形態において、フロー・グラフは、ノード及びエッジを含むことが可能であり、ここで、各ノードは動作を識別し、各エッジは、ノード(たとえば、動作)間の関係、たとえば動作が実行される順番を識別する。コンパイラは、ノード(たとえば、動作)を処理要素のうち1つに割り当て、フロー・グラフの計算を並列化するように構成することが可能である。いくつかの実施形態において、フロー・グラフは、拡張可能なマーク付け言語(XML)フォーマットで提供されてもよい。いくつかの実施形態において、コンパイラは、複数のフロー・グラフを単一の処理要素に割り当てるように構成することが可能である。
いくつかの実施形態において、並列処理装置は、そのパフォーマンスを計測して、コンパイラに情報を提供するように構成することが可能である。したがって、コンパイラは、並列処理装置から受けた過去のパフォーマンス情報を使用して、並列処理装置の処理要素への現在のタスクの割当てを決定することができる。いくつかの実施形態において、パフォーマンス情報は、処理装置の1つまたは複数の処理要素で遭遇したアクセス衝突の数を示すことができる。
いくつかの場合において、並列処理装置を、映像アプリケーションで使用することが可能だが、それは計算処理上コストが高くなるかもしれない。映像アプリケーションの計算処理上の要求に対応するために、並列処理装置は、メモリ・アクセスの間、処理ユニット間のアクセス衝突を減少させるように、そのメモリ・サブシステムを構成することができる。このため、前述のように、並列処理装置は、単一の物理メモリブロックとしてモノリシック・メモリ・バンクを使用する代わりに、モノリシック・メモリ・バンクを複数の物理RAMインスタンスにさらに分割することができる。この細分化により、各物理RAMインスタンスは、読み出し及び書き込み動作を調停することができ、それによって、メモリ・バンクの物理RAMインスタンスの数により利用可能帯域幅を増加させる。
いくつかの実施形態において、ハードウェア・サイクル指向調停はまた、複数のトラフィック・クラス及びプログラム可能なスケジューリング・マスクを提供することができる。複数のトラフィック・クラス及びプログラム可能なスケジューリング・マスクは、ランタイム・スケジューラを使用して制御することが可能である。ハードウェア・サイクル指向調停ブロックは、ポート調停ブロックを含むことが可能である、それはラウンドロビン・スケジューリング・スキームで単一の共有リソースの複数のリクエスタを割り当てるように構成することが可能である。ラウンドロビン・スケジューリング・スキームにおいて、リクエスタ(たとえば、処理要素)は、要求がリクエスタから受けた順番で、リソース(たとえば、メモリ)へのアクセスが許可される。いくつかの場合において、ポート調停ブロックは、複数のトラフィック・クラスに対応するために、ラウンドロビン・スケジューリング・スキームを強化することが可能である。単一の共有リソースは、RAMタイル、共有レジスタまたはベクトル・プロセッサ、フィルタ・アクセラレータ、及びRISCプロセッサがデータを共有するためにアクセスすることができるその他のリソースを含むことが可能である。さらに、調停ブロックは、優先ベクトルまたはスーパー優先ベクトルによるラウンドロビン・リソース割当てのオーバーライドを考慮することができる。優先ベクトルまたはスーパー優先ベクトルは、必要に応じて関心のある特定のアプリケーションによって特定のトラフィック・クラス(たとえば、映像トラフィック・クラス)に優先順位をつけるために、ランタイム・スケジューラによって提供することができる。
いくつかの実施形態において、処理要素は、ベクトル・プロセッサまたはストリーミング・ハイブリッド・アーキテクチャ・ベクトル・エンジン・プロセッサ、ハードウェア・アクセラレータ、及びハードウェア・フィルタ・オペレータなどのプロセッサのうちの1つまたは複数を含むことができる。
図4は、メモリ・サブシステムを有する並列処理装置を示し、それはいくつかの実施形態に従って、マルチ・プロセッサ(たとえば、ストリーミング・ハイブリッド・アーキテクチャ・ベクトル・エンジン(SHAVE)プロセッサ)がマルチポート・メモリ・サブシステムを共有することを可能にする。特に、図4は、並列処理装置400を示し、それは画像及び映像データの処理に好適である。処理装置400は、プロセッサなどの複数の処理要素402を備える。図4の例示的な構成において、処理装置400は、8つのプロセッサ(SHAVE 0 402−0〜SHAVE 7 402−7)を含む。各プロセッサ402は、データがメモリ412からロードされてよく、かつメモリ412に格納されてもよい2つのロード・ストア・ユニット404、406(LSU0、LSU1)を含むことができる。各プロセッサ402はまた、命令がロードされてもよい命令ユニット408を含むことが可能である。プロセッサがSHAVEを含む特定の実施形態において、SHAVEは、縮小命令セットコンピュータ(RISC)、デジタル信号プロセッサ(DSP)、超長命令語(VLIW)、及び/またはグラフィック処理ユニット(GPU)のうちの1つまたは複数を含むことが可能である。メモリ412は、本明細書で接続マトリクス(CMX)スライスと呼ばれる、複数のメモリ・スライス412−0〜412−7を備える。各メモリ・スライス412−Nは、対応するプロセッサ402−7と関連する。
並列処理装置400はまた、プロセッサ402及びメモリ・スライス412を結合する相互接続システム410を含む。相互接続システム410は本明細書において、SHAVE間相互接続(ISI)と呼ばれる。ISIは、プロセッサ402がメモリ・スライス412のうちの任意の1つの任意の部分にデータを読み出しまたは書き込みすることができるバスを含むことが可能である。
図5は、いくつかの実施形態による並列処理装置のセクションを示す。セクション500は、単一のプロセッサ402−Nと、単一のプロセッサ402−Nと関連するメモリ・スライス412−Nと、単一のプロセッサ402−N及びその他のメモリ・スライス(図示せず)と結合するISI410と、メモリ・スライス412−Nのタイルとプロセッサ402との間の通信を調停するタイル制御ロジック506とを含む。セクション500に示されるように、プロセッサ402−Nは、プロセッサ402−Nと関連するメモリ・スライス412−Nに直接アクセスするように構成されることが可能である。プロセッサ402−Nは、ISIを介してその他のメモリ・スライス(図示せず)にアクセスすることができる。
いくつかの実施形態において、各メモリ・スライス412−Nは、複数のRAMタイルまたは物理RAMブロック502−0〜502−Nを含むことが可能である。たとえば、128kBのサイズを有するメモリ・スライス412−Nは、4k×32ビット・ワードとして編成される4つの32kBシングル・ポートRAMタイル(たとえば、物理RAM要素)を含むことが可能である。いくつかの実施形態において、タイル502はまた、論理RAMブロックと称されてもよい。いくつかの実施形態において、タイル502は、シングル・ポートの相補型金属酸化膜半導体(CMOS)RAMを含むことが可能である。シングル・ポートCMOS RAMの利点は、それが一般に最も多くの半導体プロセスにおいて利用可能であるということである。他の実施形態において、タイル502は、マルチポートCMOS RAMを含むことが可能である。
いくつかの実施形態において、各タイル502を、タイル制御ロジック506と関連させることが可能である。タイル制御ロジック506は、プロセッサ402から要求を受けるように構成され、関連するタイル502の個々の読み出し及び書き込みポートへのアクセスを提供する。たとえば、処理要素402−NがRAMタイル502−0のデータにアクセスしたいとき、処理要素402−NがRAMタイル502−0にメモリ・データ要求を直接送る前に、処理要素402−Nは、RAMタイル502−0と関連するタイル制御ロジック506−0に、メモリ・アクセス要求を送ることができる。メモリ・アクセス要求は、処理要素402−Nによって要求されるデータのメモリ・アドレスを含むことが可能である。その後、タイル制御ロジック506−0は、メモリ・アクセス要求を分析し、処理要素402−Nが要求されたメモリにアクセスできるかどうか判定することができる。処理要素402−Nが要求されたメモリにアクセスすることができる場合、タイル制御ロジック506−0は、処理要素402−Nにアクセス許可メッセージを送ることができ、その後、処理要素402−Nは、RAMタイル502−0にメモリ・データ要求を送ることができる。
複数の処理要素による同時アクセスの可能性があるため、いくつかの実施形態において、タイル制御ロジック506は衝突検出器を含んでもよく、それは、プロセッサまたはアクセラレータなどの2つ以上の処理要素がメモリ・スライスのタイルの任意の1つにアクセスしようとするインスタンスを検出するように構成される。衝突検出器は、試みた同時アクセスの各タイル502へのアクセスをモニタすることができる。衝突検出器は、アクセス衝突が発生し、解決する必要があることを、ランタイム・スケジューラに報告するように構成されることが可能である。
図6は、いくつかの実施形態によるタイル制御ロジックの集中型衝突検出システムを示す。衝突検出システムは、集中型調停ブロック608を含むことが可能であり、それは複数の衝突検出器604及び複数のワンホット・アドレス・エンコーダ602を含む。いくつかの実施形態において、ワンホット・アドレス・エンコーダ602は、処理要素402のうちの1つからメモリ・アクセス要求を受け、メモリ・アクセス要求がワンホット・アドレス・エンコーダ602と関連するRAMタイル502に格納されたデータに対するものであるかどうか判定するように構成される。各衝突検出器604は、1つまたは複数のワンホット・アドレス・エンコーダ602に結合されることが可能であり、それはまた、衝突検出器602と関連するタイル502にアクセスできる処理要素402のうちの1つに結合される。いくつかの実施形態において、衝突検出器604は、特定のRAMタイル502と関連するすべてのワンホット・アドレス・エンコーダ602に結合されることが可能である。
メモリ・アクセス要求がワンホット・アドレス・エンコーダ602と関連するRAMタイル502に格納されるデータに対するものである場合、ワンホット・アドレス・エンコーダ602は、特定のRAMタイルの衝突検出器604に、ビット値「1」を提供し得る。メモリ・アクセス要求がワンホット・アドレス・エンコーダ602と関連するRAMタイル502に格納されるデータに対するものでない場合、ワンホット・アドレス・エンコーダ602は、特定のRAMタイルの衝突検出器604に、ビット値「0」を提供し得る。
いくつかの実施形態において、ワンホット・アドレス・エンコーダ602は、メモリ・アクセス要求がメモリ・アクセス要求のターゲット・アドレスを分析することによってワンホット・アドレス・エンコーダ602と関連するRAMタイル502に格納されるデータに対するものであるかどうかを判定するように構成される。たとえば、ワンホット・アドレス・エンコーダ602と関連するRAMタイル502が0×0000及び0×00ffのメモリ・アドレス範囲で示されるとき、ワンホット・アドレス・エンコーダ602は、メモリ・アクセス要求のターゲット・アドレスが0×0000及び0×00ffの範囲に入るかどうか判定することができる。範囲に入る場合、メモリ・アクセス要求は、ワンホット・アドレス・エンコーダ602と関連するRAMタイル502に格納されるデータに対するものである。範囲に入らない場合、メモリ・アクセス要求は、ワンホット・アドレス・エンコーダ602と関連するRAMタイル502に格納されるデータに対するものではない。いくつかの場合において、ワンホット・アドレス・エンコーダ602は、メモリ・アクセス要求のターゲット・アドレスがRAMタイル502と関連するアドレス範囲に入るかどうかを判定するために、範囲比較ブロックを使用することができる。
衝突検出器604がすべてのワンホット・アドレス・エンコーダ602からビット値を受けた時点で、衝突検出器604は、同じRAMタイル502へのアクセスを現在要求している1つより多い処理要素402があるかどうかを判定するために、受け取ったビット値における「1」の数をカウントする(たとえば、ビット値を合計する)ことができる。同じRAMタイル502へのアクセスを現在要求している1つより多い処理要素がある場合、衝突検出器604は、衝突を報告することができる。
図7は、いくつかの実施形態によるタイル制御ロジックの分散型衝突検出システムを示す。分散型衝突検出システムは、分散アービタ702を含むことが可能であり、それは複数の衝突検出器704を含む。分散型衝突検出システムの動作は、集中型衝突検出システムの動作と実質的に同様である。この場合、衝突検出器704は、分散配置される。特に、分散アービタ702は、直列に配置される衝突検出器704を含むことが可能であり、ここで、各衝突検出器704は、特定のRAMタイル502と関連するワンホット・アドレス・エンコーダ602のサブセットにのみ結合される。この配置は、衝突検出器704が特定のRAMタイル502と関連するすべてのワンホット・アドレス・エンコーダ602に結合される集中型衝突検出システムとは異なる。
たとえば、特定のRAMタイル502が64の処理要素402によってアクセスされることが可能であるとき、第1の衝突検出器704−0は、32の処理要素からメモリ・アクセス要求を受けることが可能であり、第2の衝突検出器704−1は、残りの32の処理要素からメモリ・アクセス要求を受けることが可能である。第1の衝突検出器704−0は、それ自身に結合される32の処理要素からの1つまたは複数のメモリ・アクセス要求を分析し、それ自身に結合される32の処理要素のうちの、特定のRAMタイル502−0へのアクセスを要求している第1の要素数を判定するように構成されることが可能である。同時に、第2の衝突検出器704−1は、それ自身に結合される32の処理要素からの1つまたは複数のメモリ・アクセス要求を分析し、それ自身に結合される32の処理要素のうちの、特定のRAMタイル502−0へのアクセスを要求している第2の要素数を判定するように構成されることが可能である。次いで第2の衝突検出器704は、第1の数と第2の数を加算し、64の処理要素のうちのどれだけが特定のRAMタイル502−0へのアクセスを要求しているか判定することができる。
衝突検出システムが衝突を検出した時点で、衝突検出システムは、リクエスタ402に停止信号を送ることができる。図8は、いくつかの実施形態による、衝突信号をリクエスタに報告するための調停ブロックを示す。より詳細には、衝突検出システムの範囲比較ブロックの出力は、ORゲートを使用して組み合わせられ、リクエスタへの停止信号を生成する。半分の信号は、1つより多い処理要素がリクエスタと関連するメモリ・スライス内の同じ物理RAMサブブロックにアクセスしようとしていることを示す。停止信号を受けると、衝突が解消されるまで、リクエスタはメモリ・アクセス動作を停止することができる。いくつかの実施形態において、衝突をプログラム・コードと独立して、ハードウェアによって解消することができる。
いくつかの実施形態において、調停ブロックは、サイクル粒度で作動することができる。このような実施形態において、調停ブロックは、タスク・レベル粒度よりもむしろクロック・サイクル粒度でリソースを割り当て、それは複数のクロック・サイクルを含んでもよい。このようなサイクル指向スケジューリングは、システムのパフォーマンスを改善することができる。調停ブロックは、調停ブロックがリアルタイムでサイクル指向スケジューリングを行うことができるように、ハードウェアに実装されることが可能である。たとえば、任意の特定のインスタンスで、ハードウェアに実装される調停ブロックは、リソースを次のクロック・サイクルに割り当てるように構成されることが可能である。
図9は、いくつかの実施形態による、サイクル指向調停ブロックを示す。サイクル指向調停ブロックは、ポート調停ブロック900を含むことが可能である。ポート調停ブロック900は、第1のポート選択ブロック930と第2のポート選択ブロック932とを含むことが可能である。第1のポート選択ブロック930は、(クライアント要求ベクトルのビット位置として識別される)メモリ・アクセス要求のどの1つが、スライス・ポート[0]に結合されるメモリ・スライスにアクセスするためにスライス・ポート[0]に割り当てられるかを判定するように構成され、その一方で、第2の選択ブロック932は、クライアント要求ベクトルのどの1つが、スライス・ポート[1]に結合されるメモリ・スライスにアクセスするためにスライス・ポート[1]に割り当てられるかを判定するように構成される。
第1のポート選択ブロック930は、第1の先行1検出器(LOD)902−0と第2のLOD902−1とを含む。第1のLOD902−0は、複数のビットを含み得るクライアント要求ベクトルを受けるように構成されている。クライアント要求ベクトルの各ビットは、メッセージ・アクセス要求がそのビット位置と関連するリクエスタから受けたかどうかを示す。いくつかの場合において、クライアント要求ベクトルは、「アクティブ・ハイ」モードで作動する。第1のLOD902−0がクライアント要求ベクトルを受けた時点で、第1のLOD902−0は、左から右へカウントしながら、要求が初めて0以外になるビット位置を検出するように構成され、それによって、左から右からカウントしながら、第1のポート選択ブロック930への第1のメモリ・アクセス要求を識別する。同時に、クライアント要求ベクトルは、AND論理演算子912によってマスクされ、マスク・レジスタ906及びマスク左シフタ904によって生成されるマスクを使用するマスク・クライアント要求ベクトルを生成することができる。マスク・レジスタ906は、マスク・レジスタ906と通信するプロセッサによって設定されることが可能であり、マスク左シフタ904は、マスク・レジスタ906で表されるマスクを左にシフトするように構成されることが可能である。第2のLOD902−1はAND論理演算子912からのマスク・クライアント要求ベクトルを受け、マスク・クライアント要求ベクトルの先行1を検出することができる。
次に、第1のLOD902−0及び第2のLOD902−1からの出力は、ポート[0]勝者選択ブロック908に提供される。ポート[0]勝者選択ブロック908は、2つの追加の入力である、優先ベクトル及びスーパー優先ベクトルをさらに受ける。ポート[0]勝者選択ブロック908は、受け取ったメモリ・アクセス要求のうちのどの1つが、入力の優先度に基づいて、スライス・ポート[0]に割り当てられるべきかを判定するように構成される。いくつかの実施形態において、入力の優先度は、以下の通りにランク付けできる。最も高い優先度を有するスーパー優先ベクトルから開始し、マスクLODベクトルを優先要求及び非優先要求に分割する優先ベクトル、次に、最も低い優先度を有する非マスクLODベクトルである。他の実施形態において、その他の優先度が指定されることも可能である。
第1のポート選択ブロック930は、クライアント要求ベクトルをスライス・ポート[0]に割り当てることができるかどうかを判定するように構成されることが可能である一方、第2のポート選択ブロック932は、クライアント要求ベクトルがスライス・ポート[1]に割り当てることができるかどうかを判定するように構成されることが可能である。第2のポート選択ブロック932は、第1の後縁1検出器(TOD)912−0と、第2のTOD912−1と、マスク・レジスタ914と、マスク右シフタ916と、ポート[1]勝者選択ブロック918と、マスキングAND論理ブロック920とを含む。TOD912は、複数のビットを含み得るクライアント要求ベクトルを受けるように構成され、右から左へカウントしながら、ベクトルが初めて0以外になるビット位置を検出する。第2のポート選択ブロック932の動作は、後縁1検出器912−0を使用する入力要求ベクトルで後縁1を選択する入力ベクトルの右から左に作動する以外は、第1のポート選択ブロック930と実質的に同様である。
ポート勝者選択ブロック908、918の出力はまた、同じ勝者検出ブロック910に提供され、それは同じメモリ・アクセス要求がスライス・ポート[0]及びスライス・ポート[1]へのアクセスを勝ち取ったかどうかを判定するように構成される。同じクライアント要求ベクトルが、スライス・ポート[0]及びスライス・ポート[1]へのアクセスを勝ち取った場合、同じ勝者検出ブロック910は、要求を送るために1またはスライス・ポートを選択し、その他のポートを入力ベクトルの次に最も高いランクの要求に割り当てる。これは、特定の要求にリソースを過度に割り当てることを避け、それによって、競合するリクエスタへのリソース配分を改善する。
ポート調停ブロック900の動作は、32ビット・クライアント要求ベクトルの左側から始まることによって働き、マスクLOD902−1は第1のマスク要求ベクトルの位置を出力し、このマスク要求ベクトルが、優先ベクトルまたはスーパー優先ベクトルを介してより高い優先入力に取って代わられない場合、LOD位置に対応するリクエスタが勝ち、ポート[0]へのアクセスが許可される。LOD位置はまた、32ビット左シフタ904を介してマスク位置を進めるために使用され、かつ、同じリクエスタが両方のポートへのアクセスが与えられたどうか調べるために、ポート1LOD割当てと比較するために使用され、この場合、ポートのうちの1つのみが、連続した同じ勝者検出の場合にはポート0と1との間で交互の原則でアクセスを許可するために切り換えられているフリップフロップによって許可される。マスク検出器902−1からのLOD出力が、優先ベクトルの対応する1ビットを介して優先度を割り当てられた場合には、要求しているクライアントは、ポート0への2連続のアクセスが許可される。マスク・クライアント要求ベクトルに先行1がなく、より高い優先要求が存在しない場合には、非マスクLODが勝ち、ポート0へのアクセスが割り当てられる。上記のいずれの場合においても、スーパー優先ベクトルの1ビットは、先の要求をいずれもオーバーライドし、リクエスタにポート0への無制限のアクセスを許可する。
図の下部のロジックは、要求ベクトルの右手側から始まり、その他の場合、要求ベクトルの左手側から始まる上部と同様に作動する。この場合、優先度などに関するポート1調停ブロックの動作は、ロジックのポート0部分のものと同一である。
いくつかの実施形態において、処理要素402は、メモリ・アクセス調停によるメモリ・アクセスのレイテンシを減少させるためのバッファを含むことができる。図10は、いくつかの実施形態による、メモリ・アクセス調停に起因するメモリ・アクセス・レイテンシを減少させるためのメカニズムを示す。典型的なメモリ・アクセス調停スキームにおいて、メモリ・アクセス調停ブロックはパイプライン化されるが、これは、RAMタイル502などの共有リソースを複数の処理要素(たとえば、リクエスタ)のうちの1つに割り当てるとき、固定オーバヘッド調停ペナルティという結果をもたらす。たとえば、リクエスタ402が調停ブロック608/702にメモリ・アクセス要求を送るとき、以下のステップのそれぞれにおいて少なくとも1つのサイクルをとるため、リクエスタ402がアクセス許可メッセージを受けるためには、少なくとも4つサイクルをとる。(1)ワンホット・アドレス・エンコーダ602でメモリ・アクセス要求を分析する、(2)調停ブロック608/702でワンホット・アドレス・エンコーダ602の出力を分析する、(3)調停ブロック608/702によってワンホット・アドレス・エンコーダ602にアクセス許可メッセージを送る、(4)ワンホット・アドレス・エンコーダ602によってリクエスタ402にアクセス許可メッセージを送る。次いで、その後、リクエスタ402は、メモリ・データ要求をRAMタイル502に送り、RAMタイル502からデータを受けなければならず、そのぞれぞれは少なくとも1つのサイクルをとる。したがって、メモリ・アクセス動作は、少なくとも6つのサイクルのレイテンシを有する。この固定ペナルティは、メモリ・サブシステムの帯域幅を減少させるであろう。
このレイテンシ問題は、処理要素402で維持されるメモリ・アクセス要求バッファ1002によって対応することができる。たとえば、メモリ・アクセス要求バッファ1002は、クロック・サイクルごとに、処理要素からメモリ・アクセス要求を受け、それらをメモリ調停ブロック608/702に送る準備ができるまで、受け取ったメモリ・アクセス要求を格納することができる。バッファ1002は、メモリ・アクセス要求をメモリ調停ブロック608/702に送るレートと、データをメモリ・サブシステムから受けるレートとを実質的に同期させる。いくつかの実施形態において、バッファにはキューを含ませることが可能である。バッファ1002の要素数(たとえば、バッファの深さ)を、メモリ・サブシステムからのデータを検索するサイクル数より大きくすることが可能である。たとえば、RAMアクセス・レイテンシが6サイクルであるとき、バッファ1002の要素数は10にすることができる。バッファ1002は調停レイテンシ・ペナルティを減少させ、メモリ・サブシステムのスループットを改善することができる。メモリ・アクセス要求バッファによって、原則として、最大100%の全体メモリ帯域幅を、リクエスタ間で割り当てることが可能である。
複数のRAMインスタンスを使用することに関する潜在的な問題は、複数の処理要素によるバンク内のサブ・インスタンスへの同時アクセスが可能になることによって、メモリ競合が結果的に起こることであることが理解されよう。
本開示は、メモリ競合に対応するための少なくとも2つのアプローチを提供する。第1に、競合及び/またはメモリ衝突を減少させるようにメモリ・サブシステムのデータを慎重に配置することによってメモリ競合及び/またはメモリ衝突を回避するために、後で説明されるように、ソフトウェア設計において注意が払われる。さらにまた、並列処理装置と関連するソフトウェア開発ツールは、ソフトウェア設計段階に、メモリ競合またはメモリ衝突を報告することが可能である。したがって、メモリ競合問題またはメモリ衝突問題は、ソフトウェア設計段階に報告されるメモリ競合またはメモリ衝突に応じて、データ形式を改善することによって修正することが可能である。
第2に、さらに下で説明されるように、アーキテクチャ内のISIブロックは、ハードウェアのポート衝突(競合)を検出し、より低い優先度の処理要素をストールするように構成される。たとえば、ISIブロックは、処理要素からのメモリ・アクセス要求を分析し、メモリ・アクセス要求の順序を修正し、そして優先順位に従ってメモリ・アクセス要求を送るように構成され、その結果、すべての処理要素からのすべてのデータ読み込みまたは書き込みが優先順に完了する。
処理要素間の優先順位は、多くの方法で確定することが可能である。いくつかの実施形態において、優先順位は、システム設計時に静的に定義されてもよい。たとえば、優先順位は、システム・レジスタのリセット状態としてコード化することが可能であり、その結果、システムが起動するとき、システムは一連の事前に割り当てた優先度で起動する。他の実施形態において、優先順位は、ユーザがプログラム可能なレジスタによって動的に決定されることが可能である。
いくつかの実施形態において、プログラマは、メモリ・スライス内のメモリの共有サブブロックの競合を減少させるために、ソフトウェア・アプリケーションのデータ形式を設計してもよい。いくつかの場合において、データ形式の設計を、調停ブロックによって支援することが可能である。たとえば、調停ブロックは、メモリ競合を検出し、優先度に基づいて、メモリ及び最優先タスクと関連する処理要素へのアクセスを許可し、競合するその他の処理要素をストールし、競合が解決されるまでプロセスごとに競合を解決することができる。
図11は、いくつかの実施形態によるスケジューリング・ソフトウェアのアプリケーションを示す。本出願において、スケジューリング・ソフトウェアは、処理パイプライン内の3×3ブラー・カーネルの実装を調整することができる。スケジューリング・ソフトウェアは、実行時に、動作の順序を判定し、処理要素による動作を調整することができる。パイプラインのフロー・グラフ1100は、要素1〜要素5 1102〜1110を含む。要素1 1102は、入力バッファ1112と、処理ブロック1144と、出力バッファ1114とを含むことが可能である。入力バッファ1112及び出力バッファ1114は、フリップフロップを使用して実装されることが可能である。いくつかの実施形態において、その他の要素1104〜1110のそれぞれは、要素1 1102と実質的に同様の構造を有することが可能である。
いくつかの実施形態において、要素2 1104は、3×3ブラー・フィルタによる入力をフィルタリングすることが可能な処理要素(たとえば、ベクトル・プロセッサまたはハードウェア・アクセラレータ)を含むことが可能である。要素2 1104は、共有バッファ1118からの入力を受けるように構成することが可能であり、それは一時的に、要素1 1102の出力を維持する。3×3ブラー・カーネルを入力に適用するために、要素2 1104は、動作を開始できる前に、共有入力バッファ1118から少なくとも3ラインのデータを受けることができる。したがって、RISCプロセッサ1122で実行できるSWスケジューラ1120は、フィルタリング動作を開始できることを要素2 1104に合図する前に、正しい数のラインのデータが共有バッファ1118に含まれることを検出できる。
3ラインのデータが存在するという初期信号に続いて、SWスケジューラ1120は、各追加の新しいラインがローリング3ライン・バッファ1118に加えられたときを、要素2 1104に信号で伝えるように構成されることが可能である。ラインごとの同期に加えて、サイクルごとの調停及び同期がパイプラインの各要素に対して行われる。たとえば、要素1 1102は、1サイクルごとに1つの完全な出力ピクセルを生成するハードウェア・アクセラレータを含むことが可能である。このスループットを実現するために、処理ブロック1114がその動作を続けるために十分なデータを有するように、ハードウェア・アクセラレータは入力バッファ1112を完全に保持することができる。このように、処理ブロック1114は、要素1102のスループットをできるだけ高く保持するのに十分な出力を生成することができる。
いくつかの実施形態において、ソフトウェア・ツール・チェーンは、メモリ・サブシステムを使用するソフトウェア・プログラムを分析することから、メモリ・コンフリクトを予測することができる。ソフトウェア・ツール・チェーンは、開発者がコードを編集し、必要なときにコンパイラ、アセンブラを呼び出し、ソースレベルのデバッグを行うことができるグラフィック・ユーザ・インタフェース(GUI)ベースの統合開発環境(IDE)(たとえば、EclipseベースのIDE)を含むことができる。ソフトウェア・ツール・チェーンは、システム・シミュレータを使用して、マルチ・プロセッサで実行されるプログラムを動的分析することによって、メモリ・コンフリクトを予測するように構成することができ、そのシステム・シミュレータは、すべての処理、バス、メモリ要素、及び周辺機器をモデル化する。異なるプロセッサまたはハードウェア・リソースで実行される異なるプログラムがメモリ・スライスの特定のブロックへの同時のアクセスを試みているかどうかを、ソフトウェア・ツール・チェーンはまた、ログ・ファイルまたはディスプレイ装置に記録するように構成されることが可能である。ソフトウェア・ツール・チェーンは、サイクルごとを基本にログ出力するように構成される可能性がある。
いくつかの実施形態において、パイプライン1100はまた、メモリ衝突が発生するたびにインクリメントされる1つまたは複数のハードウェア・カウンタ(たとえば、メモリ・インスタンスごとに1つのカウンタ)を含むことができる。そしてこれらのカウンタは、ハードウェア・デバッガ(たとえば、JTAG)によって読み込まれてもよく、かつ、画面上に表示またはファイルにログ出力されてもよい。その後のシステム・プログラマによるログ・ファイルの分析により、メモリ・ポート衝突の可能性を減少させるように、メモリ・アクセスを異なるスケジュールにすることが可能となる。
IBMのCellアーキテクチャ(図2に示される)のプログラマにとっての1つの重要な問題点は、データがDMAによって制御され、ベクトル・プロセッサがアクセスする時間までにローカル・ストレージ(LS)に格納されることが可能であるように、事前に数百サイクルのデータ転送をプログラム的にスケジュール化することである。開示されるアーキテクチャのいくつかの実施形態は、ハードウェアにおけるアクセスの調停及びスケジュール化を処理し、ユーザ可読ハードウェア・カウンタに衝突を記録することによって、この問題に対処することができる。これにより、開示されるアーキテクチャを、高性能な映像/画像処理パイプラインを作成するために使用することができる。
図12は、いくつかの実施形態による並列処理装置を有する階層的なシステムの構成を提供する。システム1200は、フィルタなどの複数の処理要素を有する並列コンピューティング・システム1202と、並列コンピューティング・システム1204上で実行するソフトウェア・アプリケーション1204と、アプリケーション1204を並列コンピューティング・システム1202とインタフェースするためのアプリケーション・プログラミング・インタフェース(API)1206と、並列コンピューティング・システム1202上で実行するためにソフトウェア・アプリケーション1204をコンパイルするコンパイラ1208と、並列コンピューティング・システム1202の処理要素の動作を制御するためのランタイム・スケジューラ1210とを含むことが可能である。
いくつかの実施形態において、開示される並列処理装置は、パイプライン記述ツール(たとえば、ソフトウェア・アプリケーション)1204とともに作動するように構成されることが可能であり、それは画像処理パイプラインをフロー・グラフとして記述することを可能にする。パイプライン記述ツール1204は、基礎をなすハードウェア/ソフトウェア・プラットフォームから独立した柔軟な方法で、画像/視覚処理パイプラインを記述することが可能である。特に、パイプライン記述ツールによって使用されるフロー・グラフは、フロー・グラフを実装するために使用されてもよい処理要素(たとえば、プロセッサ及びフィルタ・アクセラレータ・リソース)とは独立して、タスクを記述することを可能にする。パイプライン記述ツールで得られる出力は、有向非巡回グラフ(DAG)またはフロー・グラフの記述を含むことが可能である。DAGまたはフロー・グラフの記述は、XMLなどの好適なフォーマットで格納されることができる。
いくつかの実施形態において、DAGまたはフロー・グラフの記述は、システム1200の他のすべてのツールにアクセス可能とすることができ、DAGに従って並列処理装置の動作を制御するために使用されることが可能である。図13は、いくつかの実施形態による、DAGまたはフロー・グラフの記述が並列処理装置の動作を制御するために使用できる方法を示す。
コンピューティング装置の実際の動作の前に、並列処理装置1202のコンパイラ1208は、(1)フロー・グラフ1306の記述と、(2)利用可能なリソース1302の記述とを取り込み、DAGが複数の処理要素でどのように実行できるかを示すタスク・リスト1304を生成することができる。たとえば、タスクを単一の処理要素上で実行できない場合、コンパイラ1208はタスクを複数の処理要素に分割することができる。タスクを単一の処理要素上で実行できる場合、コンパイラ1208はタスクを単一の処理要素に割り当てることができる。
いくつかの場合において、タスクが処理要素の能力の一部のみ使用するとき、コンパイラ1208は、単一の処理要素上で順番に実行される複数のタスクを、処理要素によってサポート可能な限界まで、結合して、スケジュール化することができる。図14Aは、いくつかの実施形態による、コンパイラ及びスケジューラによるタスクのスケジュール化及び発行を示す。コンパイラ及びスケジューラを使用するタスクのスケジュール化の利点は、コンパイラ及びスケジューラが、タスクによって実行される動作に基づいてタスクを自動的にスケジュール化できることである。これは、プログラマが特定のタスクを実行する処理要素または処理要素のグループで実行するコードのスケジュールを手動で決定しなければならなかった先行技術に対する大きな利点であり、それは、周辺機器からCMXまで、CMXからCMXブロックまで、そしてCMXバックから周辺機器までのDMAによってデータ転送をスケジュール化するときを含む。これは面倒でエラーが生じやすいタスクであったが、DFGの使用により、このプロセスの自動化が可能になり、時間が節約され、生産性は向上する。
コンピューティング装置の実行中、ランタイム・スケジューラ1210は、コンパイラ1208によって生成されるタスク・リスト1304に基づいて、利用可能な処理要素全体のタスクを動的にスケジュール化することができる。ランタイム・スケジューラ1210は、マルチコア・システムのホストRISCプロセッサ1306上で作動することが可能であり、ハードウェア・パフォーマンス・モニタ及びタイマ1308からの統計を使用して、複数のベクトル・プロセッサ、フィルタ・アクセラレータ、及びダイレクト・メモリ・アクセス(DMA)エンジンなどの処理要素全体のタスクをスケジュール化することができる。いくつかの実施形態において、ハードウェア・パフォーマンス・モニタ及びタイマ1308は、ストール・カウンタ、CMX衝突カウンタ、バス・サイクルカウンタ(ISI、APB、及びAXI)、ならびにサイクル・カウンタを含むことができ、それはランタイム・スケジューラ1210によって読み込まれてもよい。
いくつかの実施形態において、ランタイム・スケジューラ1210は、ハードウェア・パフォーマンス・モニタ及びタイマ1308からの統計に基づいて、タスクを利用可能な処理要素に割り当てることができる。ハードウェア・パフォーマンス・モニタ及びタイマ1308は、処理要素の効率を増加させる、あるいは、電力を節約するまたはその他のタスクを並列に計算することを可能にするために、少ない処理要素を使用してタスクを実行するために使用できる。
このため、ハードウェア・パフォーマンス・モニタ及びタイマ1308は、パフォーマンス・メトリックを提供することができる。パフォーマンス・メトリックは、処理要素のアクティビティ・レベルを示す数とすることができる。パフォーマンス・メトリックは、タスクを実行するためのインスタンス化された処理要素の数を制御するために使用できる。たとえば、特定の処理要素と関連するパフォーマンス・メトリックが所定の閾値より大きいとき、ランタイム・スケジューラ1210は、特定の処理要素と同じタイプの追加の処理要素をインスタンス化することによって、より多くの処理要素にタスクを分散することができる。別の実施例として、特定の処理要素と関連するパフォーマンス・メトリックが所定の閾値をより小さいとき、ランタイム・スケジューラ1210は、特定の処理要素と同じタイプのインスタンス化された処理要素の1つを取り除くことで、特定のタスクを実行する処理要素の数を減少させることができる。
いくつかの実施形態において、ランタイム・スケジューラ1210は、処理要素の使用に優先順位をつけることができる。たとえば、ランタイム・スケジューラ1210は、タスクがプロセッサまたはハードウェア・フィルタ・アクセラレータに好ましくは割り当てられなければならないかどうかを判定するように構成されることが可能である。
いくつかの実施形態において、ランタイム・スケジューラ1210は、システムがランタイム構成基準に従うことができるように、メモリ・サブシステムのCMXバッファ・レイアウトを変えるように構成されることが可能である。ランタイム構成基準は、たとえば、画像処理スループット(フレーム/秒)、エネルギー消費量、システムによって使用されるメモリ容量、作動しているプロセッサの数、及び/または作動しているフィルタ・アクセラレータの数を含むことができる。
出力バッファは、いくつかの方法のうちの1つで、メモリに配置することが可能である。いくつかの場合において、出力バッファは、メモリ内で物理的に連続していることが可能である。その他の場合、出力バッファを「ぶつ切り」または「スライス」にすることも可能である。たとえば、出力バッファは、N個の垂直ストリップに分割可能である、ここで、Nは画像処理アプリケーションに割り当てられるプロセッサの数である。各ストリップは異なるCMXスライスに配置される。各プロセッサは入出力バッファに局所的にアクセスすることができるので、このレイアウトはプロセッサに好都合であろう。しかし、このようなレイアウトは、フィルタ・アクセラレータに多くの衝突を引き起こす可能性があるため、このレイアウトはフィルタ・アクセラレータには不利益であろう。フィルタ・アクセラレータは多くの場合、左から右にデータを処理する。したがって、すべてのフィルタ・アクセラレータは、画像の第1のストリップにアクセスすることによって、そのプロセスを開始し、それが最初から多くの衝突を引き起こす可能性がある。その他の場合、出力バッファはインタリーブされることが可能である。たとえば、出力バッファは、所定のサイズ・インタリービングで、全16枚のCMXスライス全体に分割可能である。所定のサイズを、128ビットとすることが可能である。CMX全体にアクセスを分散させることにより衝突の可能性が減少するため、出力バッファのインタリーブ・レイアウトは、フィルタ・アクセラレータに好都合であろう。
いくつかの実施形態において、入力バッファまたは出力バッファなどのバッファは、そのプロデューサ及びコンシューマがハードウェア及び/またはソフトウェアであるかどうかに基づいて割り当てられることが可能である。コンシューマがより重要であり、それは、それらが通常、より多くの帯域幅を必要とする(フィルタは通常、複数のラインを読み込んで、1本のラインを出力する)ためである。ハードウェア・フィルタは、バッファのレイアウトに応じてプログラムされる(それらは、隣接する、インタリーブされて、スライスされたメモリ・アドレスをサポートする)。
図14Bは、いくつかの実施形態による、コンパイラ及びスケジューラを使用したタスクの自動スケジュール化のプロセスを示す。コンパイラは、DAGに基づき、並列処理装置によって行われるタスクのリストを決定する。ステップ1402において、ランタイム・スケジューラは、タスクのリストを受けて、タスクのリストを個別のキューに維持するように構成される。たとえば、タスクのリストが、(1)DMAにより行われるタスク、(2)プロセッサにより行われるタスク、及び、(3)ハードウェア・フィルタにより行われるタスクを含むとき、ランタイム・スケジューラは、タスクを3つの独立したキュー、たとえば、DMAのための第1のキュー、プロセッサのための第2のキュー、及びハードウェア・フィルタのための第3のキューに格納することができる。
ステップ1404〜1408において、ランタイム・コンパイラは、関連するハードウェア・コンポーネントが新しいタスクに利用できるようになると、関連するハードウェア・コンポーネントにタスクを発行するように構成される。たとえば、ステップ1404において、DMAが新しいタスクを実行することが可能になると、ランタイム・コンパイラは、DMAの第1のキューをデキューして、デキューされたタスクをDMAに提供するように構成される。同様に、ステップ1406において、プロセッサが新しいタスクを実行することが可能になると、ランタイム・コンパイラは、プロセッサの第2のキューをデキューして、デキューされたタスクをプロセッサに提供するように構成される。また、ステップ1408において、ハードウェア・フィルタが新しいタスクを実行することが可能になると、ランタイム・コンパイラは、ハードウェア・フィルタの第3のキューをデキューして、デキューされたタスクをハードウェア・フィルタに提供するように構成される。
いくつかの実施形態において、ランタイム・スケジューラ1210は、ハードウェア・パフォーマンス・モニタ及びタイマ1308からのカウンタ値を使用して、処理要素の使用を調整してもよく、特に、ここで、これらのパイプラインが必ずしも協調設計されているというわけではないため、1つより多いパイプライン(たとえば、ソフトウェア・アプリケーション1204)は処理要素のアレイ上で同時に実行している。たとえば、各パイプラインに割り当てられる効果的なバス帯域幅が予想より小さく、CMXメモリにアクセスする際に発生する衝突の数が多い場合、ランタイム・スケジューラ1210は、タスクが2つのパイプライン・キューから取得される順序を修正することによって、2つのパイプラインの実行をずらすために、この情報を使用してもよく、それによって、メモリの衝突を減少させる。
いくつかの実施形態において、DAGコンパイラは、リアルタイム(たとえば、オンライン)で作動することができる。図15は、いくつかの実施形態によるリアルタイムDAGコンパイラの動作を示す。リアルタイムDAGコンパイラ1502は、DAGの入力XML記述、利用可能な処理要素の記述、及び、プロセッサ数、フレームレート、電力散逸ターゲットなどの任意のユーザ定義制約条件を受けるように構成されることが可能である。次いで、リアルタイムDAGコンパイラ1502は、たとえば、DMAエンジン、プロセッサ、ハードウェア・フィルタ、及びメモリを含む処理要素全体でDAGコンポーネントをスケジュールするように構成されることが可能であり、システム・リソースにマップされるときに、指定されたDAGがユーザ定義制約条件を満たすことができることを保証する。いくつかの実施形態において、リアルタイムDAGコンパイラ1502は、DAGのタスクを幅優先方法で並列に実行できるかどうかを判定することができる。DAGの幅が並列にタスクを実行するために利用可能な処理要素の数より大きい(たとえば、利用可能な処理能力の合計がDAGの並列性をより小さい)場合、リアルタイムDAGコンパイラ1502はタスクを「折りたたむ」ことができ、その結果、タスクは利用可能な処理要素上で順次実行される。
図16は、OpenCLスケジューラによって生成されるスケジュールを、いくつかの実施形態による提案されたオンラインDAGスケジューラによって生成されるスケジュールと比較する。提案されたスケジューラ1208/1502によって生成されるスケジュールは、典型的なOpenCLスケジュールに存在する冗長コピー及びDMA転送を除くことができる。DAGタスクに関する処理を実行するために使用されるGPUがスケジュールを実行するプロセッサから離れているため、これらのデータ転送はOpenCLスケジュール内に存在する。携帯機器で使用される典型的なアプリケーション・プロセッサにおいて、大きいデータブロックは、スケジュールを実行するプロセッサと処理を行うGPUとの間でやりとりされる。提案された設計において、すべての処理要素は同じメモリ空間を共有し、よって、コピーをやりとりする必要がなく、かなりの時間、帯域幅、及び電力散逸を節約する。
いくつかの実施形態において、タスクが処理要素の能力の一部のみ使用するとき、図14に示されるように、ランタイム・スケジューラ1210は、単一の処理要素上で順番に実行される複数のタスクを、処理要素によってサポート可能な限界まで、結合して、スケジュール化することが可能である。
画像処理アプリケーションにおいて、スケジューラは、ストリップに画像を分割することによって、プロセッサ間に処理タスクを分割するように構成することが可能である。たとえば、画像は、所定の幅の垂直ストリップまたは水平ストリップに分割可能である。
いくつかの実施形態において、スケジューラは、特定の画像処理アプリケーションに使用されるプロセッサの数を事前に決定することができる。これにより、スケジューラは、画像のためのストリップの数を事前に決定することができる。いくつかの実施形態において、フィルタリング動作は、プロセッサによって連続実行されることが可能である。たとえば、アプリケーションによって実行される5つのソフトウェア・フィルタがあるとき、プロセッサ402は、第1の時間インスタンスと同時の第1のソフトウェア・フィルタ、第2の時間インスタンスと同時の第2のソフトウェア・フィルタなどを実行するようにそれぞれ構成されることが可能である。これは、演算負荷が特定の画像処理アプリケーションに割り当てられるプロセッサ間でより均一にバランスがとられることを意味する。これは、プロセッサが同じ順序でフィルタの同じリストを同時に実行するように構成されるためである。
あまりに多くのプロセッサが画像処理アプリケーションに割り当てられると、プロセッサが多くの時間をアイドリングに費やし、ハードウェア・フィルタ・アクセラレータ上でタスクの完了を待機する可能性がある。他方で、あまりに少ないプロセッサがアプリケーションに割り当てられると、ハードウェア・フィルタ・アクセラレータが多くの時間をアイドリングに費やす可能性がある。いくつかの実施形態において、ラン・スケジューラ1210は、これらの状況を検出し、それに対して適応するように構成されることが可能である。他の実施形態において、スケジューラ1210は、プロセッサを特定の画像処理アプリケーションに過剰に割り当てるように構成されることが可能であり、プロセッサがハードウェア・フィルタ・アクセラレータより前にそのタスクを完了すると、プロセッサの能力を下げることが可能になる。
いくつかの実施形態において、スケジューラは、バリア・メカニズムを使用して、ハードウェア・フィルタ・アクセラレータ及びプロセッサなどの処理要素を同期させることができる。スケジューラの出力は、コマンドのストリームを含むことが可能である。これらのコマンドは、(1)ハードウェア・フィルタ・アクセラレータ及びプロセッサなどの処理要素のスタート・コマンド、及び、(2)バリア・コマンドを含むことが可能である。バリア・コマンドは、処理要素のいくつかがそれらのタスクを実際に完了したとしても、グループのすべての処理要素がバリア・コマンドに達するまで、処理要素は、コマンドの次のセットを処理すること待たなければならないことを指示する。いくつかの実施形態において、スケジューラは、処理要素によって実行されるタスクの間の依存度に基づいて、バリア・コマンドを提供してもよい。
図17は、いくつかの実施形態による、処理要素を同期させるためのバリア・メカニズムを示す。コマンドのストリームは、バリア・コマンド(1702、1712)と、タスク・コマンド(1704、1706、1708、1710)とを含む。各タスク・コマンドを処理要素と関連させることが可能であり、下のグラフに示されるように、タスク・コマンドを異なる時間で完了することができる。したがって、バリア・コマンド1712がクリアされるまで、処理要素が将来のタスクを開始しないように、スケジューラはバリア・コマンド1712を挿入することが可能である。このバリア・メカニズムは、並列のタスクの時間的パイプライン化と考えることができる。
いくつかの実施形態において、バリア・メカニズムは、割り込み信号1714を使用してハードウェアに実装される。たとえば、スケジューラは、どの処理要素がグループに属するかについて指定するビット・マスクをプログラムすることができる。処理要素が割り当てられたタスクを完了すると、それぞれの処理要素に関連付けられた割り込み信号がアサートされる。グループの処理要素に関連付けられたすべての割り込み信号がアサートされた時点で、処理要素のコントローラは、すべての処理要素がバリア・コマンドに達したことを示すグローバル割り込み信号を受けることができる。
いくつかの実施形態において、割り込みソースは、SHAVEベクトル・プロセッサ、RISCプロセッサ、ハードウェア・フィルタ、または外部イベントを含むことができる。特に、ハードウェア・フィルタは、入出力バッファがフレームを含む非環状バッファ・モードを含むさまざまなモードをサポートすることができ、全入力フレームを処理した、または、完全に対応する出力フレームを書き込んだとき、フィルタは単一の割り込みを発行するように構成されることが可能である。フィルタはまた、画像寸法、バッファ・ベースのアドレス/ライン・ストライドなどの適切な設定を使用して、フレームからライン、パッチ、またはタイル上で作動するようにプログラム可能である。
並列処理装置、特に、非常に電力の影響を受けやすく、計算資源及びメモリのようなリソースに関して不十分である組み込みシステムの処理要素をプログラムする方法は、複雑な並列処理装置における1つの重要な問題である。コンピュータ画像処理、特に映像及び画像処理は、フレーム寸法及びレートが非常に高く、年々猛烈に増加しているため、組み込みシステム上でのパフォーマンスに関して非常に要求が多い。
本明細書に示されるこの問題の解決方法は、プログラマが、マルチコア・プロセッサアーキテクチャ1202の詳細についての深い知識なしで、高いレベルでアプリケーションに書き込むことができるアプリケーション・プログラミング・インタフェース(API)1206を提供することである。ソフトウェアAPI1206を使用すると、機能がプログラム可能なプロセッサ上のソフトウェア、またはハードウェアに実装されるかどうかの詳細が、プログラマから分離されているため、プログラマは、実装についての詳細を深く知ることなく、新しい画像または映像処理パイプラインを迅速に作成することができる。たとえば、ブラー・フィルタ・カーネルの実装は、1つまたは複数のプロセッサまたはハードウェア・アクセラレータ・フィルタで実行される参照ソフトウェアの実装として提供される。プログラマは、ソフトウェア・ブラー・フィルタの実装を最初に使用することができ、プログラマではなく、ISI、AMC及びCMX調停ブロックが、どのプロセッサ及びHWリソースが、及びどの順で、物理メモリブロックへのアクセスを得るかについて対処するため、全体的なパイプラインの実装への変更なしで、ハードウェア・フィルタの使用に切り替えることができる。
上記のマルチポート・メモリ・アプローチは、同一のプロセッサ間における、高帯域及び低レイテンシでのメモリの共有に適切であるが、その他の装置との帯域幅の共有には理想的ではない。これらのその他の装置は、コンピュータ映像及び画像処理などの特に非常に高帯域幅のアプリケーションにおける異なるレイテンシ要件を有するハードウェア・アクセラレータ及びその他のプロセッサでもよい。
開示されるアーキテクチャは、マルチポート・メモリ・サブシステムとともに使用されることが可能であり、非常に決定論的なレイテンシ要件、プログラム可能な画像/映像処理ハードウェア・フィルタの大きいコホート、及び従来のホスト・プロセッサ及び周辺機器による制御及びデータ・アクセスを可能にするバス・インタフェースを有した、多数のプログラム可能なVLIWプロセッサからのより多くの同時アクセスをサポートするために、より高い帯域幅を提供する。図18は、いくつかの実施形態による、異なるタイプの処理要素を有する並列処理装置を示す。並列処理装置は、複数のプロセッサ1802及び複数のフィルタ・アクセラレータ1804を含み、複数のプロセッサ1802及び複数のフィルタ・アクセラレータ1804はそれぞれ、ISI410及びアクセラレータ・メモリ・コントローラ(AMC)1806を介して、メモリ・サブシステム412に結合可能である。
AMC1806のサブシステム及びマルチコア・メモリ(CMX)サブシステム412は、プロセッサ1802ならびに特定の画像/映像処理アプリケーションのためのハードウェア・フィルタ・アクセラレータ1804上のソフトウェアでの低電力ストリーミング・デジタル信号処理を容易にするオンチップ・ストレージを提供する。いくつかの実施形態において、CMXメモリ412は、64ビット・ワードとして編成される128kBの16枚のスライスに編成される(合計2MB)。各プロセッサ1802は、メモリ・サブシステム412のスライスへのダイレクト・アクセス、及びメモリ・サブシステム412の他のすべてのスライスへのインダイレクト(より高いレイテンシ)アクセスを有することができる。プロセッサ1802は、命令またはデータを格納するために、CMXメモリ412を使用してもよく、一方、ハードウェア・フィルタ・アクセラレータ1804は、データを格納するために、CMXメモリ412を使用する。
HWフィルタ・アクセラレータ1804によって共有CMXメモリ412にアクセスするとき、異種処理要素の間のデータ共有を容易にするとともに、レイテンシを許容しないプロセッサ1802が高性能を実現することを可能にするために、HWフィルタ・アクセラレータ1804は、レイテンシを許容するように設計される。これは、いくつかの実施形態に従って図10に示されるように、各HWフィルタ・アクセラレータ(フィルタ)1804に、タイミングをより柔軟にするローカルFIFO、ならびに、ISIが自由であるCMXへのアクセスを共有し、HWフィルタ・アクセラレータから競合なしでSHAVE間通信をサポートするクロスバー・スイッチを提供することによって実現される。
外部に向かうポート衝突に加えて、内部に向かうISI410のポート・アクセスとの衝突も可能性がある。1つより多い外部スライスが、任意の1つのサイクルでメモリの同じスライスにアクセスしようとする場合、ポート衝突が発生することがある。LSUポートのISI相互接続ポートへのマッピングが固定されるため、SHAVE 0 1802−0のLSUポート0を通るスライス2へのアクセス、及び、SHAVE 11(1702−11)のLSUポート1を通るスライス2へのアクセスが、衝突なしに可能である。ISIマトリクスにより、8×2ポート×64ビットのデータを、サイクルごとに転送することが可能である。たとえば、SHAVE N 1802は、LSUポート0及び1を通してスライスN+1にアクセスすることができ、8つのすべてのSHAVEプロセッサは、ストールなしで同時にアクセスすることができる。
いくつかの実施形態において、メモリ・サブシステム412は、スライス(ブロック)に論理的に分割可能である。図19は、いくつかの実施形態による、提案されたマルチコア・メモリ・サブシステムを示す。図19は、AXI、AHB、SHAVE、ISI、及びCMXの間、ならびにフィルタ・アクセラレータ、AMC、及びCMXの間の詳細なバス相互接続を示す。図は、2つのAMC入力ポート及び2つのAMC出力ポート、2つのISI入力ポート及び2つのISI出力ポート、L2キャッシュ及び相互排除(ミューテックス)ブロックならびに内部読み出し/書き込み調停との接続、4つのメモリ・タイル及びFIFOをアドレスするソース多重化ならびにISI及びAMCへの4つのメモリブロック出力の出力先選択を示す。
各スライスは、12のSHAVE、DMA、テクスチャ管理ユニット(TMU)、及びオンボード・ホスト・プロセッサへのAHBバス・インタフェースを含む16の可能なISI入力ソースのうちの2つに連結することができる。同様に、各スライスは、スライスが12のSHAVE、DMA、テクスチャ管理ユニット(TMU)、及びオンボード・ホスト・プロセッサへのAXI及びAHBバス・インタフェースを含む16の可能な送信先のうちの2つにデータを送ることを可能にする2つの出力ISIポートを有する。好ましい実装態様において、スライスは、ローカルSHAVEプロセッサ(2×LSU及び2×64ビット命令ポート)、2つのISI入力ポート、2つのAMC入力ポート、及びSHAVE間メッセージングに使用されるFIFO、ならびに、メッセージングFIFO、L2キャッシュ、及びミューテックス・ブロックに順番に連結する入力調停ブロックを有する4つの物理RAMブロックを含む。
CMXスライスからの出力経路上で、宛先選択ブロックへの入力は、L2キャッシュ及びハードウェア・ミューテックス・ブロックに加えて、4つのRAMインスタンスに連結される。図20にブロック2002として示される宛先選択ブロックからの出力は、2つのローカルLSUポート及び命令ポート(SP_1及びSP_0)、ならびに2× ISI出力ポート及び2× AMC出力ポートに連結される。2つのISIポートは、ローカル・スライスが12の可能なプロセッサ、DMA、TMU AXI、及びAHBホスト・バスから2つの宛先に連結することを可能にし、プロセッサには、マルチコア・メモリ・サブシステム・スライスに含まれる2×64ビットISI入力ポート及び2×64ビットISI出力ポートに連結するSHAVE間相互接続(ISI)を介した、メモリへのアクセスが提供される。ISI相互接続によって提供される高帯域幅、低レイテンシの決定論的なアクセスは、プロセッサのストールを減少させて、高いコンピュテーショナル・スループットを提供する。
図21は、いくつかの実施形態による、AMC Crossbarアーキテクチャを示す。AMCクロスバー1806は、ハードウェア画像処理フィルタ1804を、CMXマルチコア・メモリ・スライス412のAMCポートに連結するように構成されることができる。AMC1806は、1つまたは複数のスライス・ポート・コントローラ2102を、好ましくはCMXスライス412ごとに1つ含むことができる。スライス・ポート・コントローラ2102は、スライス・アドレス要求フィルタ(SARF)2104に、順番に連結される。SARF2104は、AMCクライアントに順番に連結される(本実施形態において、AMCクライアントはハードウェア画像処理アクセラレータである)。SARF2104は、フィルタ・アクセラレータから読み出し/書き込み要求を受けて、それらに要求または許可信号を提供し、書き込みアクセスが許可されているSIPPブロックからデータ及びアドレスを受け、読み出しアクセスが許可されているSIPPブロックに読み出しデータを提供する。さらに、SARFは、システム・ホスト・プロセッサに、AXIホスト・バス上のAXIマスタリングを提供し、それはホストが、AMCクロスバー・スイッチを介してCMXメモリに問い合わせる(読み出し/書き込み)ことを可能にする。
いくつかの実施形態において、スライス・ポート・コントローラ2102は、図21に示されるように、関連するCMXメモリ・スライス412の2×読み出し及び2×書き込みポートと通信するAMC1806に設けられる。CMXメモリ・サブシステム412のフィルタ・アクセラレータ側から参照すると、各ハードウェア・フィルタは、アクセラレータ・メモリ・コントローラ(AMC)クロスバー1806上のポートに連結される。AMC1806は、CMXメモリ412の各スライスに連結する一対の64ビット読み出しポート及び一対の64ビット書き込みポートを有する(好ましい実施態様において、合計2MBの16枚のスライスがある)。読み出し及び書き込みクライアント・インタフェース及びアクセラレータ内のローカル・バッファリングを介して画像処理ハードウェア・アクセラレータをAMC1806に連結することにより、プロセッサのストールの低減を可能にする非常に決定論的なタイミングを有するISI及びプロセッサにより多くの帯域幅を利用可能な状態にするより緩やかなレイテンシ要件を可能にする。
図20は、いくつかの実施形態による、CMXインフラストラクチャの単一のスライスを示す。スライスは、CMXスライスの4つの物理SRAMタイル、共有L2キャッシュ、スレッド間の相互排除のプロセッサ間ネゴシエーションのための共有ミューテックス・ハードウェア・ブロック、ならびにSHAVE間の低帯域幅メッセージングに使用される64ビットFIFOへの、8つのうち最大4つの可能な64ビット・ソース・アクセスを可能にするアービタ及びソース多重化を含む。6つの入力ソースは、図21に示される、ACMからの対応するslice_port[1]及びslice_port[0]ポートに連結されるAMCout1及びAMCout0と、追加の2つのISIポートであるISIout1及びISIout0と、2×LSUポートLSU_1及びLSU_0と、最後に、組み合わされたとき、128ビット命令がCMXからの読み出されることを可能にする2×命令ポートSP_1及びSP_0とである。アービタ及びソース多重化は、8つの入力ソースからの優先アクセスに応じて4×SRAMタイルを制御するために、読み出し/書き込みアドレス及び64ビット・データを生成する。64ビットSHAVE間通信FIFOの入力は、アービタ及びソース・マルチプレクサに連結されるが、その出力は、CMXスライスのローカル・プロセッサによってのみ読み出し可能である。実際には、プロセッサは、ISIout1及びISIout0ポートならびにCMXスライスより外側のISIインフラストラクチャを介して互いのメッセージングFIFOと通信し、それはCMX、スライス、及びプロセッサを互いに連結する。
図20に示されるスライスにおける2つのAMCポートのそれぞれでの64のリクエスタの間で調停することに加えて、追加の2:1アービタが、AMCポート1と0との間で調停するために提供される。この2:1アービタの目的は、要求しているポートの1つでの過度のストールにつながる可能性がある、2つのAMCポートのうちの一方または他方によるAMCポート帯域幅のすべての飽和を防止することである。この強化は、ポート帯域幅の複数の重いリクエスタが存在する場合に、よりバランスのとれたリソースの割当て、したがって、全体的なアーキテクチャのためのより高い持続するスループットを提供する。同様に、2:1アービタは、同様の理由のために、2つのプロセッサ・ポートSP1とSP0との間で調停を行う。
調停及び多重化ロジックはまた、直接または共有L2キャッシュへのISIを介してのいずれかで、16の可能なソース間の厳密なラウンドロビン方式でのアクセスを共有する調停の第2のレベルを介して、プロセッサによるアクセスを制御し、ここで、1つの64ビット・ポートは、第2のレベルのアービタと16個のCMXスライスのそれぞれとの間で連結される。同様に、同じロジックは、(ISI上のAHB及びAXIバス連結を介して)12個のオンボードプロセッサ及び2×32ビットRISCプロセッサで実行されるスレッド間で相互排除のプロセッサ間ネゴシエーションのために使用される32のハードウェア・ミューテックスへのアクセスを可能にする。
好ましい実装態様における優先度は次のとおりである。SP_1及びSP_0が最も高い優先度を有し、次にLSU_1及びLSU_0、続いてISIout1及びISIout0、そしてAMCout1及びAMCout0、そして最後にFIFOが最も低い優先度を有する。この優先度割当ての理由は次のとおりである。SP_1及びSP_0はCMXへのプロセッサによるプログラム・アクセスを制御し、プロセッサは、次の命令が利用できない場合、すぐにストールし、プロセッサを再びストールさせるLSU_1及びLSU_0が続く。同様に、ISIout1及びISIout0はその他のプロセッサから来て、データがすぐに利用可能でない場合、ストールを引き起こす。AMCout1及びAMCout0ポートは、組み込みFIFOを有して、よってストール前に多くのレイテンシを許容することができるため、最も低い優先度を有する。プロセッサFIFOは低帯域幅プロセッサ間メッセージングのためにのみ必要であり、よって、すべてで最も低い優先度を有する。
アービタが最大4つのソースに4つのSRAMタイル、L2キャッシュ、ミューテックス、及びFIFOへのアクセスを可能にすると、4つのSRAMタイル、L2キャッシュ、及びミューテックスを含む6つの読み出しデータ・ソースからの出力データが選択され、次の8つの可能な64ビット宛先ポート、スライスと関連するプロセッサ上の4つ(SP_1、SP_0、LSU_1及びLSU_0)と、ISIと関連する2つ(ISIout1及びISIout0)と、最後に、AMCと関連する2つ(AMCout1及びAMCout0)のうちの最大4つに向けられる。4つの64ビット・ソースのみ、8つの宛先ポートに分散されなければならないため、出力マルチプレクサにおいて優先順位は必要とされない。
図22は、いくつかの実施形態によるAMCクロスバー・ポート・コントローラを示す。AMCクロスバー・ポート・コントローラ2202は、ラウンドロビン・アービタ2204を含み、それはポート・コントローラ2202を、要求がプロセッサを介してフィルタリングされるアクセラレータ1804に連結する。次いで、アービタは、ポート・コントローラFIFO上へ、AMCクライアントからの有効な要求をプッシュすることができる。読み出し要求の場合、要求への応答(読み出しクライアントID及びライン・インデックス)は、読み出しTX ID FIFO上へプッシュされる。Rd TX ID FIFOからの読み出しクライアントID及びライン・インデックスをポップし、要求しているAMCクライアントによって読み出し可能なRdデータFIFO上へ対応するスライス・ポート読み出しデータ及び有効な信号をプッシュするポート・コントローラ読み出しロジックに、戻されたスライス・ポート・データ及び有効な信号が入力される。FIFOのCMX側で、ポート・ストール・ロジックはFIFOからの要求をポップし、関連するCMXメモリ・スライス上の2×AMC入力ポートにスライス・ポート制御を提供する。
CMXへの読み出し及び書き込み書きクライアント・インタフェースの数は、別々に設定可能である。任意のクライアントは、CMXの任意のスライス(または、複数のスライス)をアドレスしてもよい。CMXの16個のスライス、スライスにつき2つのポート、及び600MHzのシステム・クロック周波数の場合、クライアントに供給することができる最大合計データ・メモリ帯域幅は、143GB/sである。最大帯域幅=600MHz(64/8)16=1.536e11 B/s=143GB/s。
より高い800MHzのクロック周波数では、帯域幅は191GB/秒まで増加する。AMCは、それに連結されるハードウェア・アクセラレータ・ブロックの、そのクライアント読み出し/書き込みインタフェースでの同時アクセスの間で調停する。最大の2つの読み出し/書き込みアクセスは、クロック・サイクルごとのスライスごとに許可されてもよく、600MHzのシステム・クロック周波数で、8.9GB/sの最大スライス・メモリ帯域幅を与える。クライアント・アクセスは、CMXアドレス空間に限定されない。CMXアドレス空間の範囲外のアクセスは、AMCのAXIバス・マスタに転送される。
図23は、いくつかの実施形態による、AMC1806を使用する読み出し動作を示す。この図において、4つのデータ・ワードは、アドレス範囲A0〜3から読み出される。AMCクライアント(たとえば、フィルタ・アクセラレータ1804)は最初、ポート・コントローラ入力で要求をアサートする。ポート・コントローラ2202は、クライアントにアドレスA0、A1、A2、最後にA3を順番に送らせる許可信号(gnt)を発行することによって応答する。対応するrindex値は、各許可に対応するクロック(clk)の立ち上がりエッジに現れる。インデックス・アドレス及びデータと比較すると、クライアント側のタイミングは非常に柔軟にすることができ、それはCMXスライスからポート・コントローラへの出力であることが分かる。ポート・コントローラのCMX側の決定論的なタイミングは、AMCクライアントとレイテンシに非常に影響を受けるプロセッサとの間のCMXへの効率的な共有アクセスを可能にし、一方、FIFO、及び、AMCクライアントのローカル・ストレージは、CMXメモリ・サブシステム412のAMCクライアント(たとえば、フィルタ・アクセラレータ)側で、タイミングを高変位にすることができる。
図24は、いくつかの実施形態による、AMC1806を使用する書き込み動作を示す。タイミング図において、4つのデータ・ワードの、AMCを介したCMXへの移動が示される。要求はAMCクライアントで発行され、クロック(clk)の次の立ち上がりエッジで、許可信号(gnt)は高くなり、アドレスA0と関連するデータ・ワードD0をAMCを介して転送する。次にgnt信号は、1つのクロック・サイクルの間、低くなり、clkの次の立ち上がりエッジで、gntは、2つのクロック・サイクルの間、高くなり、gntが再び低くなる前に、D1及びD2をそれぞれアドレスA1及びA2に与える。clkの次の立ち上がりエッジで、gntは再び高くなって、データ・ワードD3がアドレスA3に転送されることを可能にし、その結果、req及びgntはclkの次の立ち上がりエッジで低くなり、次の読み出し/書き込み要求を待つ。
図12の例示的な配置とともに使用されるストリーミング画像処理パイプライン(SIPP)ソフトウェア・フレームワークは、画像/映像処理ダイが取り付けられる基板にワイヤボンドされるパッケージの外部DRAMダイの附属物を、スキャンライン・バッファ、フレーム・タイル(フレームのサブセクション)、または高解像度での実際の全フレームのためのCMXメモリ412を使用する画像処理パイプラインの実装への柔軟なアプローチに提供する。SIPPフレームワークは、画像境界(ピクセルの多重化)の取扱い、及び、(プロセッサ上の)ソフトウェアのISP(画像信号処理)の実装態様を、よりシンプルにかつより汎用的にする環状ライン・バッファ管理などの複雑さに対処する。
図25は、いくつかの実施形態による並列処理装置400を示す。並列処理装置400は、メモリ・サブシステム(CMX)412と、複数のフィルタ・アクセラレータ1804と、メモリ・サブシステム412にアクセスを調停するためのバス構造1806とを含むことができる。メモリ・サブシステム(CMX)412は、複数の処理要素402が、ストールすることなくデータ及びプログラム・コード・メモリに並列にアクセスすることを可能にするように構成される。これらの処理要素402は、たとえば、SHAVE(ストリーミング・ハイブリッド・アーキテクチャ・ベクトル・エンジン)プロセッサ、好適にVLIW(超長命令語)プロセッサ、ストールすることのないデータ及びプログラム・コード・メモリへの並列のアクセス、またはフィルタ・アクセラレータを含むことができる。さらに、メモリ・サブシステム(CMX)412は、AXI(図示せず)などの並列バスを介してCMXメモリ・サブシステム412にアクセスするために、ホスト・プロセッサ(図示せず)の準備をすることができる。いくつかの実施形態において、各処理要素402は、そのLSUポートを通して1サイクルにつき128ビットまで読み出し/書き込みすることが可能であり、その命令ポートを通して1サイクルにつき128ビット・プログラム・コードまで読み出すことが可能である。それぞれ、プロセッサ及びフィルタ・アクセラレータのためのISI及びAMCインタフェースに加えて、CMX412は、AHB及びAXIバス・インタフェースを通るメモリへの同時読み出し/書き込みアクセスを提供する。AHB及びAXIは、プロセッサ、メモリ、及び周辺機器が共有バス・インフラストラクチャ1806を使用して連結することを可能にする標準ARMパラレル・インタフェース・バスである。CMXメモリ・サブシステム412は、1サイクルにつき18×128ビット・メモリ・アクセスのピークを処理するように構成されることが可能である。
アクセラレータ1804は、SIPPソフトウェア・フレームワーク1200で使用可能なハードウェア画像処理フィルタのコレクションを含む。アクセラレータ1804は、最も計算負荷の高い機能の一部を処理要素1802からオフロードすることができる。図は、複数のフィルタ・アクセラレータ1804が、アドレス・フィルタリング、調停、及び多重化を行うAMC1804に連結することができる方法を示す。複数のMIPIカメラ・シリアル・インタフェース2502もAMC1804に連結されてもよく、好ましい実装態様において、合計12のMIPIシリアル・レーンは、2つのレーンの6つのグループに連結される。AMC1804はまた、AXI及びAPBインタフェースに連結され、リファレンス実装の2つのシステムRISCプロセッサがAMCを介してCMXメモリにアクセスすることを可能にする。図の最終要素は、AMC1804がアクセスを調停するCMX412であり、複数のハードウェア・フィルタ・アクセラレータ1804によるCMXメモリ412の物理RAMインスタンスへの同時アクセスを可能にする。リファレンス・フィルタ・アクセラレータ1804も示され、この場合、5×5 2Dフィルタ・カーネルであり、これは、fp16(IEEE754に類似の16ビット浮動小数点フォーマット)演算パイプラインと、関連するパイプライン・ストール・コントローラと、fp16パイプラインへの一連の入力を格納するライン・バッファ読み出しクライアントと、fp16パイプラインから出力を格納するライン・スタート制御入力及びライン・バッファ書き込みクライアントとを含む。アクセラレータがSIPPフレームワーク内に収まることを可能にするために、それらはCMXメモリへの高帯域幅アクセスを必要とし、これは、アクセラレータ・メモリ・コントローラ(AMC)によって提供される。
いくつかの実施形態において、CMXメモリ・サブシステム412は、高速で、低電力のアクセスのために、近隣の処理要素402と関連する128kBのブロックまたはスライスに分割可能である。スライスの中で、メモリは、多数のより小さいタイル、たとえば3×32kB、1×16kB、及び2×8kBの独立したSRAMブロックとして編成される。物理RAMサイズは、面積利用率と構成柔軟性とのトレードオフとして選択可能である。任意の処理要素402は、同じレイテンシ(3サイクル)を有するメモリ・サブシステム(CMX)412のどこでも、物理RAMにアクセスすることができるが、ローカル・プロセッサ・スライスの外側のアクセスは帯域幅で制限され、ローカル・スライスへのアクセスより電力を消費する。一般に、電力消費を減少させて、パフォーマンスを向上させるために、処理要素402は、データを専用メモリ・スライスにローカルに格納することができる。
いくつかの実施形態において、各物理RAMは64ビット長とすることが可能である。1つより多い処理要素402が単一の物理RAMにアクセスしようとする場合、衝突により、プロセッサ・ストールが発生する可能性がある。CMXは、ポート衝突間の調停を自動的に行い、データが紛失されないことを保証する。ポート衝突ごとに、処理要素402は1サイクルの間、ストールし、結果としてより低いスループットとなる。CMX412内のデータ形式を(プログラマが)慎重に考慮することによって、ポート衝突を避けることが可能であり、プロセッサ・サイクルをよりよく利用することができる。
いくつかの実施形態において、複数のプロセッサに、アクセラレータ及びCMXメモリが設けられる。
図25に示される画像処理HWアーキテクチャから分かるように、各フィルタ・アクセラレータ1804は、CMXメモリ412にアクセスする少なくとも1つのAMC読み出し及び/または書き込みクライアント・インタフェースを含むことが可能である。AMC1806上の読み出し/書き込みクライアント・インタフェースの数は、好適に設定可能である。AMC1806は、CMXメモリ412の各スライスに、一対の64ビット・ポートを含むことが可能である。AMC1806は、そのクライアントから適切なCMXスライス412に(部分的なアドレス・デコードによって)要求を送る。異なるクライアントからの同じスライスへの同時要求は、ラウンドロビン方式で調停できる。CMX412から戻った読み出しデータは、要求しているAMC読み出しクライアントに戻される。
AMCクライアント(アクセラレータ)1804は、AMC1806に完全32ビット・アドレスを提示する。CMXメモリ空間へのマッピングを行わないクライアントからのアクセスは、AMCのAXIマスタに転送される。異なるクライアントからの同時アクセス(CMXメモリ空間の外側)は、ラウンドロビン方式で調停される。
AMC1806は、フィルタ・アクセラレータ1804へのCMX412のアクセスを提供するだけに限られない。そのメモリ・インタフェースが、AMC上の読み出し/書き込みクライアント・インタフェースに好適に適合する場合、任意のハードウェア・アクセラレータまたはサード・パーティの要素は、AMC1806を使用して、CMX及びプラットフォームのより広いメモリ空間にアクセスしてもよい。
ハードウェア画像処理パイプライン(SIPP)は、フィルタ・アクセラレータ1804、調停ブロック1806、MIPIコントロール2502、APB及びAXIインタフェース及びCMXマルチポート・メモリ412への接続部、ならびに、例示的なハードウェア5×5フィルタ・カーネルを含むことができる。この配置により、複数のプロセッサ1802及び画像処理アプリケーションのハードウェア・フィルタ・アクセラレータ1804が、複数のシングル・ポートRAM(ランダム・アクセス・メモリ)物理的ブロックから成るメモリ・サブシステム412を共有することが可能になる。
シングル・ポート・メモリの使用は、メモリ・サブシステムの電力及び面積効率を向上させるが、帯域幅を制限する。提案された配置により、これらのRAMブロックは、複数の物理RAMインスタンスを使用し、さらに複数のソースに対処するためにそれらに調停されたアクセスを提供することによって、複数のソース(プロセッサ及びハードウェア・ブロック)からの複数の同時読み出し及び書き込み要求に対処することが可能な仮想マルチポート・メモリ・サブシステムとしてふるまうことが可能になる。
アプリケーション・プログラミング・インタフェース(API)及びアプリケーション・レベルでのデータ分割の使用は、プロセッサとフィルタ・アクセラレータとの間の物理RAMブロック、またはそれら自身の間のプロセッサの競合を減少させ、よって、プロセッサ及びハードウェアに提供されるデータ帯域幅が、所定のメモリ・サブシステム構成に対して増加することを保証するために重要である。
いくつかの実施形態において、並列処理装置400を、電子装置に備えることが可能である。図26は、いくつかの実施形態による並列処理装置を含む電子装置を示す。電子装置2600は、プロセッサ2602と、メモリ2604と、1つまたは複数のインタフェース2606と、並列処理装置400とを含むことが可能である。
電子装置2600は、コンピュータ可読媒体、フラッシュメモリ、磁気ディスクドライブ、光学ドライブ、プログラマブル読み出し専用メモリ(PROM)、及び/または読み出し専用メモリ(ROM)などのメモリ2604を有することが可能である。電子装置2600は、命令を処理し、メモリ2604に格納されてもよいソフトウェアを実行する1つまたは複数のプロセッサ2602で構成可能である。プロセッサ2602はまた、メモリ2604及びインタフェース2606と通信し、その他の装置と通信することができる。プロセッサ2602は、CPU、アプリケーション・プロセッサ、及びフラッシュメモリを集約するシステムオンチップなどの任意の適用可能なプロセッサ、または縮小命令セットコンピューティング(RISC)プロセッサであってもよい。
いくつかの実施形態において、コンパイラ1208及びランタイム・スケジューラ1210は、メモリ2604に格納されるソフトウェアに実装可能であり、プロセッサ2602上で作動する。メモリ2604は、非一時的なコンピュータ可読媒体、フラッシュメモリ、磁気ディスクドライブ、光学ドライブ、プログラマブル読み出し専用メモリ(PROM)、読み出し専用メモリ(ROM)、あるいは任意のその他のメモリまたはメモリ組合せであってもよい。ソフトウェアは、コンピュータ命令またはコンピュータコードを実行することが可能なプロセッサ上で実行することが可能である。プロセッサはまた、特定用途向け集積回路(ASIC)、プログラマブル・ロジック・アレイ(PLA)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、または任意のその他の集積回路を使用するハードウェアに実装されてもよい。
いくつかの実施形態において、コンパイラ1208は、インタフェース2606で電子装置2600と通信する、独立したコンピューティング装置に実装可能である。たとえば、コンパイラ1208は、電子装置2600と通信するサーバで作動することが可能である。
インタフェース2606は、ハードウェアまたはソフトウェアに実装可能である。インタフェース2606は、ネットワークならびにテレビへのリモコンなどのローカル・ソースからのデータ及び制御情報を受けるために使用可能である。電子装置はまた、キーボード、タッチ・スクリーン、トラックボール、タッチ・パッド、及び/またはマウスなどのさまざまなユーザインタフェースを提供することが可能である。電子装置はまた、いくつかの実施形態において、スピーカ及びディスプレイ装置を含んでもよい。
いくつかの実施形態において、並列処理装置400の処理要素は、コンピュータ命令またはコンピュータコードを実行することが可能な集積チップを含むことが可能である。プロセッサはまた、特定用途向け集積回路(ASIC)、プログラマブル・ロジック・アレイ(PLA)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、または任意のその他の集積回路を使用するハードウェアに実装されてもよい。
いくつかの実施形態において、並列処理装置400は、システム・オン・チップ(SOC)として実装可能である。他の実施形態において、並列処理装置の1つまたは複数のブロックを、独立したチップとして実装可能であり、並列処理装置は、システム・イン・パッケージ(SIP)にパッケージ化されることが可能である。いくつかの実施形態において、並列処理装置400は、データ処理アプリケーションのために使用されることが可能である。データ処理アプリケーションは、画像処理アプリケーション及び/または映像処理アプリケーションを含むことが可能である。画像処理アプリケーションは、画像フィルタリング動作を含む画像処理プロセスを含むことが可能である。映像処理アプリケーションは、映像デコード動作、映像エンコード動作、映像の動作または物体を検出するための映像分析動作を含むことが可能である。本発明の追加のアプリケーションは、画像、物体、または映像のシーケンスに基づく機械学習及び分類ならびに、ゲーム・アプリケーションが深さ対応カメラを含む複数のカメラ画像から形状を抜き出し、ワイヤフレーム形状(たとえばポイントクラウドを介した)をGPUによって後続の頂点シェーディングのために抜き出すことが可能な複数の表示から特徴を抜き出すアプリケーションを含む拡張現実アプリケーションを含む。
電子装置2600は、携帯電話などの携帯機器を含むことが可能である。携帯機器は、複数のアクセス技術を使用する複数の無線アクセス・ネットワーク、及び、有線通信ネットワークと通信することができる。携帯機器は、ワード処理、ウェブ・ブラウジング、ゲーム、電子ブック機能、オペレーティング・システム、及びフル・キーボードなどの高度な機能を提供するスマートフォンであってもよい。携帯機器は、Symbian OS、iPhone OS、RIMのBlackberry、Windows Mobile、Linux、Palm WebOS、及びAndroidなどのオペレーティング・システムを実行してもよい。画面は、データを携帯機器に入力するために使用することができるタッチ・スクリーンでもよく、画面は、フル・キーボードの代わりに使用可能である。携帯機器は、アプリケーションを実行する、または、通信ネットワークのサーバによって提供されるアプリケーションと通信する機能を有してもよい。携帯機器は、ネットワーク上のこれらのアプリケーションからアップデート及びその他の情報を受けることができる。
電子装置2600はまた、テレビ(TV)、映像プロジェクタ、セットトップ・ボックスまたはセットトップ・ユニット、デジタル・ビデオ・レコーダ(DVR)、コンピュータ、ネットブック、ラップトップ、タブレット・コンピュータ、及びネットワークで通信することができる任意のその他のオーディオ/ビジュアル機器などの多くのその他の装置を含むことが可能である。電子装置はまた、そのスタックまたはメモリに、グローバル位置決め座標、プロファイル情報、またはその他の位置情報を保持することができる。
いくつかの異なる配置が本明細書で説明されたが、それぞれの特徴は、利点を実現するために、さまざまな形態で互いに有利に組み合わされてもよいことが理解されるであろう。
上記明細書において、応用例が、特定の実施例によって説明されている。しかし、さまざまな変形及び変更は、添付の特許請求の範囲に記載した本発明のより広い精神及び範囲から逸脱しない範囲で、その中に行われてもよいことは明らかであろう。たとえば、接続は、それぞれのノード、ユニット、または装置の間で信号を転送するために好適な、たとえば中間装置を介した、任意のタイプの接続でもよい。したがって、特に示される、または、記載されない限り、接続はたとえば、直接接続または間接接続でもよい。
本明細書に示されるアーキテクチャは、単に例示的なものであり、実際に、同じ機能を実現する多くのその他のアーキテクチャを実装することができることが理解されるべきである。抽象的であるが、明確な意味で、同じ機能を実現するコンポーネントの任意の配置は、所望の機能が実現されるように、効果的に「関連している」。よって、特定の機能を実現するために組み合わされる本明細書の任意の2つのコンポーネントは、アーキテクチャまたは中間コンポーネントにかかわりなく、所望の機能が実現されるように、互いに「関連している」と見なすことができる。同様に、非常に関連する任意の2つのコンポーネントも、所望の機能を実現するために、互いに「作動連結」または「作動結合」されていると見なすことができる。
さらにまた、当業者であれば、上記動作の機能間の境界は単に実例であることを認識するであろう。複数の動作の機能は単一の動作に組み合わされてもよく、及び/または、単一の動作の機能は追加の動作に分散されてもよい。さらに、代替の実施形態は、特定の動作の複数の例を含んでもよく、かつ、動作の順序は、さまざまなその他の実施形態において、変更されてもよい。
しかし、その他の変形、変更、及び代案も可能である。したがって、明細書及び図面は制限的な意味ではなく、実例と見なされる。
特許請求の範囲において、括弧の間に配置される任意の参照符号は、特許請求の範囲を制限するものとして解釈されない。用語「備える(comprising)」は、特許請求の範囲に記載される以外のその他の要素またはステップの存在を除外しない。さらにまた、用語「a」または「an」は、本明細書で使用される場合、1つまたは1つより多いものとして定義される。また、特許請求の範囲における「少なくとも1つ」及び「1つまたは複数」などの導入句の使用は、不定冠詞「a」または「an」による別の請求項要素の導入が、同一の請求項が導入句「1つまたは複数」または「少なくとも1つ」、及び「a」または「an」などの不定冠詞を含む場合であっても、1つだけそのような要素を含む発明へのそのような導入請求項要素を含む任意の特定の請求項を限定することを意味するものと解釈されるべきではない。同じことが定冠詞の使用にも該当する。特に明記しない限り、「第1」及び「第2」などの用語は、そのような用語が記述する要素間の任意の識別に使用される。このように、これらの用語は、そのような要素の時間的または他の優先順位を示すようには必ずしも意図されていない。特定の処置が相互に異なる請求項において列挙されるという単なる事実は、これら処置の組合せが有利には使用され得ないということを示すものではない。

Claims (40)

  1. 命令を実行するようにそれぞれ構成される複数の処理要素と、
    前記複数の処理要素のうちの1つと関連する第1のメモリ・スライスを含む複数のメモリ・スライスを備えるメモリ・サブシステムであって、前記第1のメモリ・スライスがそれぞれ個々の読み出し及び書き込みポートを有する複数のランダム・アクセス・メモリ(RAM)タイルを備える、前記メモリ・サブシステムと、
    前記複数の処理要素と前記メモリ・サブシステムとを結合するように構成される相互接続システムであって、前記相互接続システムが、前記第1のメモリ・スライスと前記複数の処理要素のうちの前記1つとを結合するように構成されるローカル相互接続と、前記第1のメモリ・スライスと前記複数の処理要素のうちの残りとを結合するように構成されるグローバル相互接続とを含む、前記相互接続システムとを備える、
    並列処理装置。
  2. 前記複数のRAMタイルのうちの前記1つが調停ブロックと関連し、
    前記調停ブロックが、前記複数の処理要素うちの1つからのメモリ・アクセス要求を受けるように、かつ、前記複数の処理要素のうちの前記1つに、前記複数のRAMタイルうちの前記1つへのアクセスを許可するように構成される、
    請求項1に記載の処理装置。
  3. 前記調停ブロックが、ラウンドロビン方式で前記複数のRAMタイルのうちの前記1つへのアクセスを許可するように構成される、
    請求項2に記載の処理装置。
  4. 前記調停ブロックが、前記複数のRAMタイルのうちの前記1つへのメモリ・アクセス要求を監視し、前記複数の処理要素のうちの2つ以上が同時に前記複数のRAMタイルのうちの前記1つにアクセスしようとしているかどうかを判定するように構成される衝突検出器を備える、
    請求項2に記載の処理装置。
  5. 前記衝突検出器が、複数のアドレス・デコーダに結合され、
    前記複数のアドレス・デコーダのそれぞれが、前記複数の処理要素のうちの1つに結合されて、前記複数の処理要素のうちの前記1つが前記調停ブロックと関連する前記複数のRAMタイルのうちの前記1つにアクセスしようとしているかどうかを判定するように構成される、
    請求項4に記載の処理装置。
  6. 前記複数の処理要素が、少なくとも1つのベクトル・プロセッサと、少なくとも1つのハードウェア・アクセラレータとを備える、
    請求項1に記載の処理装置。
  7. 前記複数のメモリ・スライスのうちの1つへのアクセスを提供するようにそれぞれ構成される複数のメモリ・スライス・コントローラをさらに備える、
    請求項6に記載の処理装置。
  8. 前記相互接続システムが、前記少なくとも1つのベクトル・プロセッサと前記メモリ・サブシステムとの間の通信を提供するように構成される第1のバスを備える、
    請求項7に記載の処理装置。
  9. 前記相互接続システムが、前記少なくとも1つのハードウェア・アクセラレータと前記メモリ・サブシステムとの間の通信を提供するように構成される第2のバス・システムを備える、
    請求項8に記載の処理装置。
  10. 前記第2のバス・システムが、前記少なくとも1つのハードウェア・アクセラレータからのメモリ・アクセス要求を受けることによって、かつ、前記メモリ・サブシステムへのアクセスを、前記少なくとも1つのハードウェア・アクセラレータに許可することによって、前記少なくとも1つのハードウェア・アクセラレータと前記メモリ・サブシステムとの間の通信を仲介するように構成されるスライス・アドレス要求フィルタを備える、
    請求項9に記載の処理装置。
  11. 前記複数の処理装置のうちの1つが、前記メモリ・サブシステムのスループットを増加させるためのバッファを備え、
    前記バッファの要素の数が、前記メモリ・サブシステムからデータを検索するためのサイクルの数より大きい、
    請求項1に記載の処理装置。
  12. 第1の処理要素と第2の処理要素とを含み、それぞれが命令を実行するように構成された複数の処理要素を提供することと、
    前記第1の処理要素と関連し、それぞれ個々の読み出し及び書き込みポートを有する複数のランダム・アクセス・メモリ(RAM)タイルを備えた第1のメモリ・スライスを含む複数のメモリ・スライスを備えるメモリ・サブシステムを提供することと、
    相互接続システムのローカル相互接続を介した前記複数のRAMタイルのうちの1つと関連する調停ブロックによって、前記第1の処理要素から第1のメモリ・アクセス要求を受けることと、
    グローバル相互接続を介した前記調停ブロックによって、前記第1の処理要素に前記複数のRAMタイルのうちの前記1つにアクセスする権限を付与するために、前記第1の処理要素に第1の権限付与メッセージを送ることとを含む、
    並列処理システムの作動方法。
  13. 前記相互接続システムのグローバル相互接続を介した前記調停ブロックによって、第2の処理要素から第2のメモリ・アクセス要求を受けることと、
    前記グローバル相互接続を介した前記調停ブロックによって、前記第2の処理要素に前記複数のRAMタイルのうちの前記1つにアクセスする権限を付与するために、前記第2の処理要素に第2の権限付与メッセージを送ることとをさらに含む、
    請求項12に記載の方法。
  14. 前記調停ブロックによって、ラウンドロビン方式で前記複数のRAMタイルのうちの前記1つへアクセスする権限を付与するために、前記複数の処理要素に複数の権限付与メッセージを送ることをさらに含む、
    請求項12に記載の方法。
  15. 前記調停ブロックの衝突検出器によって、前記複数のRAMタイルのうちの前記1つへのメモリ・アクセス要求を監視することと、
    前記複数の処理要素の2つ以上が同時に前記複数のRAMタイルのうちの前記1つにアクセスしようとしているかどうかを判定することとをさらに含む、
    請求項12に記載の方法。
  16. 前記複数の処理要素が、少なくとも1つのベクトル・プロセッサと、少なくとも1つのハードウェア・アクセラレータとを備える、
    請求項12に記載の方法。
  17. 前記複数のメモリ・スライスのうちの1つへのアクセスを提供するようにそれぞれ構成される複数のメモリ・スライス・コントローラを提供することをさらに含む、
    請求項16に記載の方法。
  18. 前記相互接続システムの第1のバス・システムを介した、前記少なくとも1つのベクトル・プロセッサと前記メモリ・サブシステムとの間の通信を提供することをさらに含む、
    請求項17に記載の方法。
  19. 前記相互接続システムの第2のバス・システムを介した、前記少なくとも1つのハードウェア・アクセラレータと前記メモリ・サブシステムとの間の通信を提供することをさらに含む、
    請求項18に記載の方法。
  20. 前記第2のバス・システムが、前記少なくとも1つのハードウェア・アクセラレータからのメモリ・アクセス要求を受けることによって、かつ、前記メモリ・サブシステムへのアクセスを、前記少なくとも1つのハードウェア・アクセラレータに許可することによって、前記少なくとも1つのハードウェア・アクセラレータと前記メモリ・サブシステムとの間の通信を仲介するように構成されるスライス・アドレス要求フィルタを備える、
    請求項19に記載の方法。
  21. 命令を実行するようにそれぞれ構成される複数の処理要素と、
    前記複数の処理要素のうちの1つと関連する第1のメモリ・スライスを含む複数のメモリ・スライスを備えるメモリ・サブシステムであって、前記第1のメモリ・スライスがそれぞれ個々の読み出し及び書き込みポートを有する複数のランダム・アクセス・メモリ(RAM)タイルを備える、前記メモリ・サブシステムと、
    前記複数の処理要素と前記メモリ・サブシステムとを結合するように構成される相互接続システムであって、前記相互接続システムが、前記第1のメモリ・スライスと前記複数の処理要素のうちの前記1つとを結合するように構成されるローカル相互接続と、前記第1のメモリ・スライスと前記複数の処理要素のうちの残りとを結合するように構成されるグローバル相互接続とを含む、前記相互接続システムとを備える、
    並列処理装置と、
    前記並列処理装置と通信し、メモリに格納されるモジュールを実行するように構成されるプロセッサであって、
    前記モジュールが、データ処理プロセスと関連するフロー・グラフを受けるように構成され、前記フロー・グラフが、複数のノードと、前記複数のノードのうちの2つ以上を連結する複数のエッジとを備え、各ノードが動作を識別し、各エッジは前記連結されたノード間の関係を識別し、
    さらに、前記モジュールが、前記複数のノードのうちの第1のノードを前記並列処理装置の第1の処理要素に割り当て、前記複数のノードのうちの第2のノードを前記並列処理装置の第2の処理要素に割り当てるように構成され、それによって、前記第1のノード及び前記第2のノードと関連する動作を並列化する、
    前記プロセッサと
    を備える、電子装置。
  22. 前記フロー・グラフが、拡張可能なマーク付け言語(XML)フォーマットで提供される、
    請求項21に記載の電子装置。
  23. 前記モジュールが、前記複数のノードのうちの前記第1のノードを、前記並列処理装置のメモリ・サブシステムの過去のパフォーマンスに基づいて、前記第1の処理要素に割り当てるように構成される、
    請求項21に記載の電子装置。
  24. 前記並列処理装置の前記メモリ・サブシステムが、所定の期間にわたるメモリ衝突回数をカウントするように構成されるカウンタを備え、
    前記メモリ・サブシステムの前記過去のパフォーマンスが、前記カウンタによって計測される前記メモリ衝突回数を備える、
    請求項23に記載の電子装置。
  25. 前記モジュールが、前記複数のノードのうちの前記第1のノードを前記第1の処理要素に割り当てるように構成され、
    一方、前記並列処理装置が、前記フロー・グラフの少なくとも一部を作動させている、
    請求項21に記載の電子装置。
  26. 前記モジュールが、複数のフロー・グラフを受けて、前記複数のフロー・グラフと関連するすべての動作を前記並列処理装置の単一の処理要素に割り当てるように構成される、
    請求項21に記載の電子装置。
  27. 前記モジュールが、前記処理要素によるメモリ・アクセスをずらして、メモリ衝突を減少させるように構成される、
    請求項21に記載の電子装置。
  28. 前記電子装置が携帯機器を含む、
    請求項21に記載の電子装置。
  29. 前記フロー・グラフが、前記並列処理装置と関連するアプリケーション・プログラミング・インタフェース(API)を使用して指定される、
    請求項21に記載の電子装置。
  30. 前記モジュールが、入力画像データを複数のストリップに分割し、前記入力画像データの前記複数のストリップのうちの1つを前記複数の処理要素のうちの1つに提供することによって、前記入力画像データを前記複数の処理要素に提供するように構成される、
    請求項21に記載の電子装置。
  31. 前記入力画像データの前記複数のストリップの数が、前記複数の処理要素の数と同じである、
    請求項30に記載の電子装置。
  32. 並列処理装置と通信するプロセッサで、データ処理プロセスと関連し、複数のノードと、前記複数のノードのうちの2つ以上を連結する複数のエッジとを備えたフロー・グラフであって、各ノードが動作を識別し、各エッジが前記連結されたノード間の関係を識別する前記フロー・グラフを受けることと、
    前記複数のノードのうちの第1のノードを前記並列処理装置の第1の処理要素に割り当て、前記複数のノードのうちの第2のノードを前記並列処理装置の第2の処理要素に割り当て、それによって、前記第1のノード及び前記第2のノードと関連する動作を並列化することとを含み、
    前記並列処理装置がまた、
    前記第1の処理要素と関連する第1のメモリ・スライスを含む複数のメモリ・スライスを備えるメモリ・サブシステムであって、前記第1のメモリ・スライスがそれぞれ個々の読み出し及び書き込みポートを有する複数のランダム・アクセス・メモリ(RAM)タイルを備える、前記メモリ・サブシステムと、
    前記第1の処理要素、前記第2の処理要素、及び前記メモリ・サブシステムを結合するように構成される相互接続システムであって、前記相互接続システムが、前記第1のメモリ・スライスと前記第1の処理要素とを結合するように構成されるローカル相互接続と、前記第1のメモリ・スライスと前記第2の処理要素とを結合するように構成されるグローバル相互接続とを含む、前記相互接続システムとを含む、
    方法。
  33. 前記フロー・グラフが、拡張可能なマーク付け言語(XML)フォーマットで提供される、
    請求項32に記載の方法。
  34. 前記複数のノードのうちの前記第1のノードを前記並列処理装置の前記第1の処理要素に割り当てることが、前記複数のノードのうちの前記第1のノードを前記並列処理装置の第1のメモリ・スライスの過去のパフォーマンスに基づいて前記第1の処理要素に割り当てることを含む、
    請求項32に記載の方法。
  35. 前記メモリ・サブシステムのカウンタで、所定の期間にわたる前記第1のメモリ・スライスにおけるメモリ衝突回数をカウントすることをさらに含み、
    前記第1のメモリ・スライスの過去のパフォーマンスが、前記第1のメモリ・スライスにおける前記メモリ衝突回数を備える、
    請求項34に記載の方法。
  36. 前記複数のノードのうちの前記第1のノードを前記第1の処理要素に割り当てることが行われ、
    一方、前記並列処理装置が、前記フロー・グラフの少なくとも一部を作動させている、
    請求項32に記載の方法。
  37. メモリ衝突を減少させるために、前記処理要素による前記第1のメモリ・スライスへのメモリ・アクセスをずらすことをさらに含む、
    請求項32に記載の方法。
  38. 前記フロー・グラフが、前記並列処理装置と関連するアプリケーション・プログラミング・インタフェース(API)を使用して指定される、
    請求項32に記載の方法。
  39. 入力画像データを複数のストリップに分割することによって、前記入力画像データを前記複数の処理要素に提供することと、
    前記入力画像データの前記複数のストリップのうちの1つを前記複数の処理要素のうちの1つに提供することとをさらに含む、
    請求項32に記載の方法。
  40. 前記入力画像データの前記複数のストリップの数が、前記複数の処理要素の数と同じである、
    請求項39に記載の方法。
JP2016532759A 2013-08-08 2014-08-06 メモリにアクセスするための並列処理装置、コンピュータにより実施される方法、システム、コンピュータ可読媒体 Active JP6571078B2 (ja)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
GB1314263.3 2013-08-08
GBGB1314263.3A GB201314263D0 (en) 2013-08-08 2013-08-08 Configurable and composable computational imaging pipeline
ROA201300812A RO129804A0 (ro) 2013-11-06 2013-11-06 Aparat, sistem şi metodă pentru a realiza o bandă configurabilă şi extensibilă de procesare de imagini
ROA/00812 2013-11-06
US14/082,645 2013-11-18
US14/082,396 2013-11-18
US14/082,645 US9146747B2 (en) 2013-08-08 2013-11-18 Apparatus, systems, and methods for providing configurable computational imaging pipeline
US14/082,396 US9934043B2 (en) 2013-08-08 2013-11-18 Apparatus, systems, and methods for providing computational imaging pipeline
PCT/IB2014/002541 WO2015019197A2 (en) 2013-08-08 2014-08-06 Computational imaging pipeline

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2019145645A Division JP7025617B2 (ja) 2013-08-08 2019-08-07 メモリにアクセスするための並列処理装置、コンピュータにより実施される方法、システム、コンピュータ可読媒体

Publications (3)

Publication Number Publication Date
JP2016536692A true JP2016536692A (ja) 2016-11-24
JP2016536692A5 JP2016536692A5 (ja) 2017-09-21
JP6571078B2 JP6571078B2 (ja) 2019-09-04

Family

ID=52449645

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2016532759A Active JP6571078B2 (ja) 2013-08-08 2014-08-06 メモリにアクセスするための並列処理装置、コンピュータにより実施される方法、システム、コンピュータ可読媒体
JP2019145645A Active JP7025617B2 (ja) 2013-08-08 2019-08-07 メモリにアクセスするための並列処理装置、コンピュータにより実施される方法、システム、コンピュータ可読媒体
JP2022004451A Active JP7384534B2 (ja) 2013-08-08 2022-01-14 並列処理装置、コンピュータ可読記憶装置および方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2019145645A Active JP7025617B2 (ja) 2013-08-08 2019-08-07 メモリにアクセスするための並列処理装置、コンピュータにより実施される方法、システム、コンピュータ可読媒体
JP2022004451A Active JP7384534B2 (ja) 2013-08-08 2022-01-14 並列処理装置、コンピュータ可読記憶装置および方法

Country Status (6)

Country Link
US (6) US9146747B2 (ja)
EP (1) EP3031047A2 (ja)
JP (3) JP6571078B2 (ja)
KR (4) KR20230107412A (ja)
CN (2) CN105765623B (ja)
WO (1) WO2015019197A2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020522824A (ja) * 2017-11-20 2020-07-30 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. タスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器
US11042382B2 (en) 2013-08-08 2021-06-22 Movidius Limited Apparatus, systems, and methods for providing computational imaging pipeline
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
CN105579952B (zh) * 2013-10-23 2019-07-12 英特尔公司 利用伪停顿的高速通道上的emi抑制
KR102103543B1 (ko) * 2013-11-28 2020-05-29 삼성전자 주식회사 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치, 이의 동작 방법, 및 상기 데이터 저장 장치를 포함하는 시스템
US10635544B1 (en) * 2014-03-13 2020-04-28 EMC IP Holding Company LLC Assigning VMware local proxy host-datastore groups for consistently optimized access
US9542321B2 (en) * 2014-04-24 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Slice-based random access buffer for data interleaving
KR102273023B1 (ko) * 2014-10-16 2021-07-05 삼성전자주식회사 화질 개선 알고리즘 처리 방법 및 장치
US10255183B2 (en) * 2015-07-23 2019-04-09 Arteris, Inc. Victim buffer for cache coherent systems
US12026095B2 (en) 2014-12-30 2024-07-02 Arteris, Inc. Cache coherent system implementing victim buffers
US9818166B2 (en) 2015-01-16 2017-11-14 Intel Corporation Graph-based application programming interface architectures with producer/consumer nodes for enhanced image processing parallelism
US9710876B2 (en) 2015-01-16 2017-07-18 Intel Corporation Graph-based application programming interface architectures with equivalency classes for enhanced image processing parallelism
KR102106541B1 (ko) 2015-03-18 2020-05-04 삼성전자주식회사 공유 리소스 액세스 중재 방법 및 이를 수행하기 위한 공유 리소스 액세스 중재 장치 및 공유 리소스 액세스 중재 시스템
US10691463B2 (en) * 2015-07-30 2020-06-23 Futurewei Technologies, Inc. System and method for variable lane architecture
US11120884B2 (en) 2015-09-30 2021-09-14 Sunrise Memory Corporation Implementing logic function and generating analog signals using NOR memory strings
US10169073B2 (en) 2015-12-20 2019-01-01 Intel Corporation Hardware accelerators and methods for stateful compression and decompression operations
US10055807B2 (en) * 2016-03-02 2018-08-21 Samsung Electronics Co., Ltd. Hardware architecture for acceleration of computer vision and imaging processing
US10795725B2 (en) 2016-03-24 2020-10-06 Fuji Xerox Co., Ltd. Image processing device, image processing method, and non-transitory computer readable medium for image processing
JP6592184B2 (ja) * 2016-03-24 2019-10-16 富士フイルム株式会社 画像処理装置、画像処理方法、及び画像処理プログラム
WO2017163591A1 (ja) * 2016-03-24 2017-09-28 富士フイルム株式会社 画像処理装置、画像処理方法、及び画像処理プログラム
US10460704B2 (en) 2016-04-01 2019-10-29 Movidius Limited Systems and methods for head-mounted display adapted to human visual mechanism
US11531528B2 (en) 2016-05-19 2022-12-20 Cloudbees, Inc. Systems and methods for non-disruptive continuous software delivery
US10310897B2 (en) * 2016-09-30 2019-06-04 Intel Corporation Hardware accelerators and methods for offload operations
US20180122038A1 (en) * 2016-10-28 2018-05-03 Qualcomm Incorporated Multi-layer fetch during composition
US10567248B2 (en) * 2016-11-29 2020-02-18 Intel Corporation Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization
US10387160B2 (en) 2017-04-01 2019-08-20 Intel Corporation Shared local memory tiling mechanism
CN108733311B (zh) * 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储***的方法和设备
US10505860B1 (en) * 2017-05-30 2019-12-10 Xilinx, Inc. System and method for round robin scheduling
US10600147B2 (en) * 2017-08-22 2020-03-24 Intel Corporation Efficient memory layout for enabling smart data compression in machine learning environments
US10474600B2 (en) 2017-09-14 2019-11-12 Samsung Electronics Co., Ltd. Heterogeneous accelerator for highly efficient learning systems
US11243880B1 (en) 2017-09-15 2022-02-08 Groq, Inc. Processor architecture
US11360934B1 (en) 2017-09-15 2022-06-14 Groq, Inc. Tensor streaming processor architecture
US11114138B2 (en) 2017-09-15 2021-09-07 Groq, Inc. Data structures with multiple read ports
US11868804B1 (en) 2019-11-18 2024-01-09 Groq, Inc. Processor instruction dispatch configuration
US11170307B1 (en) 2017-09-21 2021-11-09 Groq, Inc. Predictive model compiler for generating a statically scheduled binary with known resource constraints
WO2019086765A1 (en) * 2017-11-06 2019-05-09 Basemark Oy Combined rendering and compute resource allocation management system
WO2019086764A1 (en) * 2017-11-06 2019-05-09 Basemark Oy Graphics engine resource management and allocation system
US10475151B2 (en) * 2017-11-06 2019-11-12 Basemark Oy Graphics engine resource management and allocation system
CN108076287B (zh) * 2017-12-14 2020-01-03 维沃移动通信有限公司 一种图像处理方法、移动终端及计算机可读存储介质
US10949947B2 (en) 2017-12-29 2021-03-16 Intel Corporation Foveated image rendering for head-mounted display devices
US10416899B2 (en) * 2018-02-13 2019-09-17 Tesla, Inc. Systems and methods for low latency hardware memory management
US10679070B1 (en) * 2018-02-23 2020-06-09 Facebook, Inc. Systems and methods for a video understanding platform
CN110555793B (zh) * 2018-06-04 2023-03-14 北京亮亮视野科技有限公司 高效的深度卷积实现方法及包括该方法的视觉处理方法
US11579921B2 (en) * 2018-08-29 2023-02-14 Alibaba Group Holding Limited Method and system for performing parallel computations to generate multiple output feature maps
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
US11301546B2 (en) 2018-11-19 2022-04-12 Groq, Inc. Spatial locality transform of matrices
WO2020107137A1 (en) * 2018-11-26 2020-06-04 Beijing Didi Infinity Technology And Development Co., Ltd. Systems and methods for point cloud rendering using video memory pool
US10963384B2 (en) * 2018-12-19 2021-03-30 SimpleMachines Inc. Method, computer program product, and apparatus for acceleration of simultaneous access to shared data
CN110083387B (zh) * 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 使用轮询机制的处理***及其访存方法
CN110032452B (zh) 2019-04-19 2021-08-24 上海兆芯集成电路有限公司 处理***与异构处理器加速方法
CN110046053B (zh) 2019-04-19 2021-11-12 上海兆芯集成电路有限公司 用以分配任务的处理***及其访存方法
CN110032453B (zh) 2019-04-19 2022-05-03 上海兆芯集成电路有限公司 用以任务调度与分配的处理***及其加速方法
CN110058931B (zh) 2019-04-19 2022-03-22 上海兆芯集成电路有限公司 用以任务调度的处理***及其加速方法
US11074213B2 (en) * 2019-06-29 2021-07-27 Intel Corporation Apparatuses, methods, and systems for vector processor architecture having an array of identical circuit blocks
US11269777B2 (en) * 2019-09-25 2022-03-08 Facebook Technologies, Llc. Systems and methods for efficient data buffering
CN114930351A (zh) 2019-11-26 2022-08-19 格罗克公司 使用仅单个侧从多维阵列加载操作数并输出结果
WO2021127218A1 (en) 2019-12-19 2021-06-24 Sunrise Memory Corporation Process for preparing a channel region of a thin-film transistor
CN113254070B (zh) 2020-02-07 2024-01-02 阿里巴巴集团控股有限公司 加速单元、片上***、服务器、数据中心和相关方法
US11675500B2 (en) 2020-02-07 2023-06-13 Sunrise Memory Corporation High capacity memory circuit with low effective latency
WO2021158994A1 (en) 2020-02-07 2021-08-12 Sunrise Memory Corporation Quasi-volatile system-level memory
WO2021173572A1 (en) * 2020-02-24 2021-09-02 Sunrise Memory Corporation Channel controller for shared memory access
US11507301B2 (en) 2020-02-24 2022-11-22 Sunrise Memory Corporation Memory module implementing memory centric architecture
US12001929B2 (en) * 2020-04-01 2024-06-04 Samsung Electronics Co., Ltd. Mixed-precision neural processing unit (NPU) using spatial fusion with load balancing
US11287869B2 (en) * 2020-04-30 2022-03-29 Marvell Asia Pte Ltd System and methods for on-chip memory (OCM) port throttling for machine learning operations
CN113744114A (zh) * 2020-05-27 2021-12-03 京东方科技集团股份有限公司 基于8k视频***的矢量图绘制方法及装置、存储介质
CN112328522B (zh) * 2020-11-26 2023-05-26 北京润科通用技术有限公司 数据处理方法和装置
WO2022173700A1 (en) 2021-02-10 2022-08-18 Sunrise Memory Corporation Memory interface with configurable high-speed serial data lanes for high bandwidth memory
US11921559B2 (en) * 2021-05-03 2024-03-05 Groq, Inc. Power grid distribution for tensor streaming processors
US20230333746A1 (en) * 2022-04-13 2023-10-19 Nvidia Corporation Speculative remote memory operation tracking for efficient memory barrier

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04246745A (ja) * 1991-02-01 1992-09-02 Canon Inc 情報処理装置及びその方法
JPH07200398A (ja) * 1993-12-10 1995-08-04 Advanced Micro Devicds Inc 不揮発性メモリチップイネーブル符号化方法、コンピュータシステム、およびメモリコントローラ
US6184709B1 (en) * 1996-04-09 2001-02-06 Xilinx, Inc. Programmable logic device having a composable memory array overlaying a CLB array
JP2002541586A (ja) * 1999-04-09 2002-12-03 クリアスピード・テクノロジー・リミテッド 並列データ処理装置
JP2002366350A (ja) * 2001-06-06 2002-12-20 Hitachi Ltd プロセッサシステム
WO2010086919A1 (ja) * 2009-01-27 2010-08-05 パナソニック株式会社 メモリアクセス装置およびその関連技術
JP2012168871A (ja) * 2011-02-16 2012-09-06 Nec Corp 計算機、消費電力低減方法およびプログラム

Family Cites Families (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB710876A (en) 1951-04-27 1954-06-23 Chamberlain & Hookham Ltd Protective apparatus for electricity distributing systems
US4281312A (en) 1975-11-04 1981-07-28 Massachusetts Institute Of Technology System to effect digital encoding of an image
GB1488538A (en) 1975-11-28 1977-10-12 Ibm Compressed refresh buffer
US4562435A (en) * 1982-09-29 1985-12-31 Texas Instruments Incorporated Video display system using serial/parallel access memories
JPS6015771A (ja) 1983-07-08 1985-01-26 Hitachi Ltd ベクトルプロセッサ
US5081573A (en) 1984-12-03 1992-01-14 Floating Point Systems, Inc. Parallel processing system
US5226171A (en) 1984-12-03 1993-07-06 Cray Research, Inc. Parallel vector processing system for individual and broadcast distribution of operands and control information
CA1236584A (en) 1984-12-03 1988-05-10 William E. Hall Parallel processing system
JPH0731669B2 (ja) 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
GB2190560B (en) 1986-05-08 1990-06-20 Gen Electric Plc Data compression
JPH02290626A (ja) 1989-04-27 1990-11-30 Nhk Spring Co Ltd 金属ベローズの製造方法および製造装置
US5434623A (en) 1991-12-20 1995-07-18 Ampex Corporation Method and apparatus for image data compression using combined luminance/chrominance coding
US6104836A (en) 1992-02-19 2000-08-15 8×8, Inc. Computer architecture for video data processing and method thereof
US5262973A (en) 1992-03-13 1993-11-16 Sun Microsystems, Inc. Method and apparatus for optimizing complex arithmetic units for trivial operands
US5861873A (en) 1992-06-29 1999-01-19 Elonex I.P. Holdings, Ltd. Modular portable computer with removable pointer device
JP3042969B2 (ja) 1993-07-28 2000-05-22 凸版印刷株式会社 ゴルフボール用転写箔及びそれを用いたゴルフボールの製造方法並びにゴルフボール
FI97096C (fi) 1994-09-13 1996-10-10 Nokia Mobile Phones Ltd Videonkompressiomenetelmä
GB2311882B (en) 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US5796269A (en) * 1996-04-09 1998-08-18 Xilinx, Inc. Composable memory array for a programmable logic device and method for implementing same
JP3042969U (ja) 1997-04-28 1997-11-04 朝日印刷紙器株式会社 トレー兼用弁当容器
JPH1185512A (ja) 1997-09-03 1999-03-30 Fujitsu Ltd 命令圧縮格納および命令復元機能を有するデータ処理装置
US6173389B1 (en) 1997-12-04 2001-01-09 Billions Of Operations Per Second, Inc. Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
US6366999B1 (en) 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
AU4326699A (en) 1998-05-30 1999-12-20 Board Of Trustees Of The Leland Stanford Junior University Low-power parallel processor and imager integrated circuit
US6577316B2 (en) 1998-07-17 2003-06-10 3Dlabs, Inc., Ltd Wide instruction word graphics processor
US6839728B2 (en) 1998-10-09 2005-01-04 Pts Corporation Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture
US6757019B1 (en) 1999-03-13 2004-06-29 The Board Of Trustees Of The Leland Stanford Junior University Low-power parallel processor and imager having peripheral control circuitry
GB2348971B (en) 1999-04-09 2004-03-03 Pixelfusion Ltd Parallel data processing systems
US20080007562A1 (en) 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US7526630B2 (en) * 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
JP3412554B2 (ja) 1999-04-16 2003-06-03 日本電気株式会社 バス調停回路
CA2369010C (en) 1999-04-16 2010-06-08 Anticancer, Inc. Method for determining level of folate in a biological sample
US6523110B1 (en) 1999-07-23 2003-02-18 International Business Machines Corporation Decoupled fetch-execute engine with static branch prediction support
US6665708B1 (en) * 1999-11-12 2003-12-16 Telefonaktiebolaget Lm Ericsson (Publ) Coarse grained determination of data dependence between parallel executed jobs in an information processing system
US6591019B1 (en) 1999-12-07 2003-07-08 Nintendo Co., Ltd. 3D transformation matrix compression and decompression
US6859870B1 (en) 2000-03-07 2005-02-22 University Of Washington Method and apparatus for compressing VLIW instruction and sharing subinstructions
US6779066B2 (en) 2000-05-01 2004-08-17 Matsushita Electric Industrial Co., Ltd. Module having application-specific program stored therein
GB2362055A (en) 2000-05-03 2001-11-07 Clearstream Tech Ltd Image compression using a codebook
WO2001084849A1 (en) 2000-05-03 2001-11-08 Clearstream Technologies Limited Video data transmission
GB2366643B (en) 2000-05-25 2002-05-01 Siroyan Ltd Methods of compressing instructions for processors
JP3560534B2 (ja) 2000-05-30 2004-09-02 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステムとその排他制御方法
US7538772B1 (en) * 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
KR100466689B1 (ko) * 2000-08-28 2005-01-24 인터내셔널 비지네스 머신즈 코포레이션 콤팩트형 이중 포트 동적 랜덤 액세스 메모리 아키텍쳐 시스템 및 그 제조 방법
CA2357236C (en) 2000-10-17 2011-09-06 Spx Development Corporation Plug-in module for portable computing device
US7305092B2 (en) 2000-12-19 2007-12-04 Qualcomm Incorporated Method and system to accelerate cryptographic functions for secure e-commerce applications
EP1241892A1 (de) 2001-03-06 2002-09-18 Siemens Aktiengesellschaft Hardware-Accelerator eines Systems zur Videoverarbeitung
KR20030005409A (ko) 2001-03-29 2003-01-17 코닌클리케 필립스 일렉트로닉스 엔.브이. 이미지 품질에 대한 알고리즘들의 랜덤 시스템을최적화하기 위한 스케일러블 확장형 시스템 및 방법
US6813390B2 (en) 2001-07-25 2004-11-02 Koninklijke Philips Electronics N.V. Scalable expandable system and method for optimizing a random system of algorithms for image quality
US20030005261A1 (en) 2001-06-29 2003-01-02 Gad Sheaffer Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US20030149822A1 (en) 2002-02-01 2003-08-07 Bryan Scott Method for integrating an intelligent docking station with a handheld personal computer
KR100464406B1 (ko) 2002-02-08 2005-01-03 삼성전자주식회사 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
US6963342B2 (en) * 2002-02-28 2005-11-08 Sun Microsystems, Inc. Arbitration scheme for efficient parallel processing
AU2003221680A1 (en) 2002-04-09 2003-10-27 The Research Foundation Of State University Of New York Multiplier-based processor-in-memory architectures for image and graphics processing
JP4566738B2 (ja) * 2002-05-24 2010-10-20 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ コンピュータメモリ装置
US7061485B2 (en) 2002-10-31 2006-06-13 Hewlett-Packard Development Company, Lp. Method and system for producing a model from optical images
US7088777B2 (en) 2002-11-22 2006-08-08 Microsoft Corp. System and method for low bit rate watercolor video
JP4266619B2 (ja) 2002-11-25 2009-05-20 株式会社ルネサステクノロジ 調停回路
US7038687B2 (en) 2003-06-30 2006-05-02 Intel Corporation System and method for high-speed communications between an application processor and coprocessor
US20080246772A1 (en) 2003-11-19 2008-10-09 Lucid Information Technology, Ltd. Multi-mode parallel graphics rendering system (MMPGRS) employing multiple graphics processing pipelines (GPPLS) and real-time performance data collection and analysis during the automatic control of the mode of parallel operation of said GPPLS
WO2005051099A1 (ja) 2003-11-28 2005-06-09 Ishokudougensha., Inc 豆類食材及びその製造方法、並びに当該豆類食材を用いた加工食品
US8028164B2 (en) 2004-03-19 2011-09-27 Nokia Corporation Practical and secure storage encryption
US7196708B2 (en) 2004-03-31 2007-03-27 Sony Corporation Parallel vector processing
CN101084493A (zh) * 2004-08-31 2007-12-05 硅奥普迪思公司 在帧缓冲器内读取和写入像素分配子帧的方法和装置
KR100618860B1 (ko) * 2004-09-09 2006-08-31 삼성전자주식회사 메모리 장치의 리프레쉬시 센싱 노이즈를 감소시킬 수있는 어드레스 코딩 방법 및 이를 구현한 어드레스 디코더
US20090009443A1 (en) * 2005-08-02 2009-01-08 Koninklijke Philips Electronics, N.V. Display Device
KR100707203B1 (ko) 2005-08-04 2007-04-13 삼성전자주식회사 3차원 그래픽스 가속 장치에 공급되는 전압을 제어하는장치 및 방법, 그를 이용한 3차원 그래픽스 가속 장치
WO2007072324A2 (en) * 2005-12-20 2007-06-28 Nxp B.V. Multi-processor circuit with shared memory banks
JP2007207024A (ja) 2006-02-02 2007-08-16 Matsushita Electric Ind Co Ltd リソース管理装置
JP2007272357A (ja) 2006-03-30 2007-10-18 Toshiba Corp ストレージクラスタシステム、データ処理方法、及びプログラム
US7805577B1 (en) * 2006-04-14 2010-09-28 Tilera Corporation Managing memory access in a parallel processing environment
US20070291571A1 (en) 2006-06-08 2007-12-20 Intel Corporation Increasing the battery life of a mobile computing system in a reduced power state through memory compression
KR100828128B1 (ko) 2006-07-20 2008-05-09 에이디반도체(주) 시분할 복수 주파수를 이용하는 정전용량 검출방법 및검출장치
JP2008108126A (ja) 2006-10-26 2008-05-08 Canon Inc データ転送制御装置及びそのバスアクセス調停方法
US8108625B1 (en) * 2006-10-30 2012-01-31 Nvidia Corporation Shared memory with parallel access and access conflict resolution mechanism
GB0700877D0 (en) 2007-01-17 2007-02-21 Linear Algebra Technologies Lt A device
GB2447494A (en) 2007-03-15 2008-09-17 Linear Algebra Technologies Lt A method and circuit for compressing data using a bitmap to identify the location of data values
US8291174B2 (en) * 2007-08-15 2012-10-16 Micron Technology, Inc. Memory device and method having on-board address protection system for facilitating interface with multiple processors, and computer system using same
US7856536B2 (en) * 2007-10-05 2010-12-21 International Business Machines Corporation Providing a process exclusive access to a page including a memory address to which a lock is granted to the process
US20090204837A1 (en) 2008-02-11 2009-08-13 Udaykumar Raval Power control system and method
US20090276559A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Arrangements for Operating In-Line Memory Module Configurations
US8930644B2 (en) 2008-05-02 2015-01-06 Xilinx, Inc. Configurable transactional memory for synchronizing transactions
JP2010003067A (ja) * 2008-06-19 2010-01-07 Sony Corp メモリシステムおよびそのアクセス制御方法、並びにプログラム
US8948270B2 (en) 2008-08-19 2015-02-03 Qualcomm Incorporated Power and computational load management techniques in video processing
US8200594B1 (en) 2008-09-10 2012-06-12 Nvidia Corporation System, method, and computer program product for accelerating a game artificial intelligence process
WO2010086751A2 (en) 2009-01-30 2010-08-05 Mauna Kea Technologies Method and system for processing images acquired in real time through a medical device
US8615039B2 (en) 2009-05-21 2013-12-24 Microsoft Corporation Optimized allocation of multi-core computation for video encoding
KR101039782B1 (ko) * 2009-11-26 2011-06-09 한양대학교 산학협력단 능동 메모리 프로세서를 포함하는 네트워크-온-칩 시스템
US8095824B2 (en) * 2009-12-15 2012-01-10 Intel Corporation Performing mode switching in an unbounded transactional memory (UTM) system
US8539129B2 (en) * 2010-04-14 2013-09-17 Qualcomm Incorporated Bus arbitration techniques to reduce access latency
US20120096445A1 (en) 2010-10-18 2012-04-19 Nokia Corporation Method and apparatus for providing portability of partially accelerated signal processing applications
WO2012052773A1 (en) 2010-10-21 2012-04-26 Bluwireless Technology Limited Data processing systems
US8516205B2 (en) * 2010-10-29 2013-08-20 Nokia Corporation Method and apparatus for providing efficient context classification
US8464190B2 (en) * 2011-02-17 2013-06-11 Maxeler Technologies Ltd. Method of, and apparatus for, stream scheduling in parallel pipelined hardware
US8892924B2 (en) * 2011-05-31 2014-11-18 Intel Corporation Reducing power consumption of uncore circuitry of a processor
US20130009980A1 (en) 2011-07-07 2013-01-10 Ati Technologies Ulc Viewing-focus oriented image processing
US9021146B2 (en) * 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
US8914262B2 (en) * 2011-11-08 2014-12-16 The Mathworks, Inc. Visualization of data dependency in graphical models
US20140169669A1 (en) 2012-12-19 2014-06-19 National Chung Cheng University Tone mapping method of high dynamic range image/video
US9123128B2 (en) 2012-12-21 2015-09-01 Nvidia Corporation Graphics processing unit employing a standard processing unit and a method of constructing a graphics processing unit
US9405357B2 (en) 2013-04-01 2016-08-02 Advanced Micro Devices, Inc. Distribution of power gating controls for hierarchical power domains
US9146747B2 (en) 2013-08-08 2015-09-29 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing configurable computational imaging pipeline
US9727113B2 (en) 2013-08-08 2017-08-08 Linear Algebra Technologies Limited Low power computational imaging
WO2015040450A1 (en) 2013-09-17 2015-03-26 Aselsan Elektronik Sanayi Ve Ticaret Anonim Sirketi Multi-purpose image processing core
US9978121B2 (en) 2013-12-04 2018-05-22 Razzor Technologies Adaptive sharpening in image processing and display
US9402018B2 (en) 2013-12-17 2016-07-26 Amazon Technologies, Inc. Distributing processing for imaging processing

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04246745A (ja) * 1991-02-01 1992-09-02 Canon Inc 情報処理装置及びその方法
US5729714A (en) * 1991-02-01 1998-03-17 Canon Kabushiki Kaisha Shared memory access method and apparatus with address translation
JPH07200398A (ja) * 1993-12-10 1995-08-04 Advanced Micro Devicds Inc 不揮発性メモリチップイネーブル符号化方法、コンピュータシステム、およびメモリコントローラ
US6184709B1 (en) * 1996-04-09 2001-02-06 Xilinx, Inc. Programmable logic device having a composable memory array overlaying a CLB array
JP2002541586A (ja) * 1999-04-09 2002-12-03 クリアスピード・テクノロジー・リミテッド 並列データ処理装置
JP2002366350A (ja) * 2001-06-06 2002-12-20 Hitachi Ltd プロセッサシステム
WO2010086919A1 (ja) * 2009-01-27 2010-08-05 パナソニック株式会社 メモリアクセス装置およびその関連技術
JP2012168871A (ja) * 2011-02-16 2012-09-06 Nec Corp 計算機、消費電力低減方法およびプログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042382B2 (en) 2013-08-08 2021-06-22 Movidius Limited Apparatus, systems, and methods for providing computational imaging pipeline
US11567780B2 (en) 2013-08-08 2023-01-31 Movidius Limited Apparatus, systems, and methods for providing computational imaging pipeline
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
JP2020522824A (ja) * 2017-11-20 2020-07-30 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. タスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器
US11221877B2 (en) 2017-11-20 2022-01-11 Shanghai Cambricon Information Technology Co., Ltd Task parallel processing method, apparatus and system, storage medium and computer device
JP7074777B2 (ja) 2017-11-20 2022-05-24 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッド タスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器
US11360811B2 (en) 2017-11-20 2022-06-14 Shanghai Cambricon Information Technology Co., Ltd Task parallel processing method, apparatus and system, storage medium and computer device

Also Published As

Publication number Publication date
US10360040B2 (en) 2019-07-23
WO2015019197A3 (en) 2015-11-19
KR20160056881A (ko) 2016-05-20
JP7384534B2 (ja) 2023-11-21
WO2015019197A2 (en) 2015-02-12
US20230359464A1 (en) 2023-11-09
CN105765623A (zh) 2016-07-13
JP6571078B2 (ja) 2019-09-04
JP2019220201A (ja) 2019-12-26
US20150046677A1 (en) 2015-02-12
US11567780B2 (en) 2023-01-31
US20220147363A1 (en) 2022-05-12
KR20210156845A (ko) 2021-12-27
KR102340003B1 (ko) 2021-12-17
US9146747B2 (en) 2015-09-29
KR102553932B1 (ko) 2023-07-07
US20150046678A1 (en) 2015-02-12
JP2022058622A (ja) 2022-04-12
EP3031047A2 (en) 2016-06-15
JP7025617B2 (ja) 2022-02-25
KR20210027517A (ko) 2021-03-10
KR102223840B1 (ko) 2021-03-09
CN105765623B (zh) 2020-04-07
US20180349147A1 (en) 2018-12-06
CN112037115A (zh) 2020-12-04
US20190370005A1 (en) 2019-12-05
US9934043B2 (en) 2018-04-03
US11042382B2 (en) 2021-06-22
KR20230107412A (ko) 2023-07-14

Similar Documents

Publication Publication Date Title
JP7384534B2 (ja) 並列処理装置、コンピュータ可読記憶装置および方法
Hassan et al. Bounding dram interference in cots heterogeneous mpsocs for mixed criticality systems
Elliott et al. GPUSync: A framework for real-time GPU management
TWI512630B (zh) 索引屏障的硬體排程之系統及方法
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
US9465670B2 (en) Generational thread scheduler using reservations for fair scheduling
US9158713B1 (en) Packet processing with dynamic load balancing
US8180998B1 (en) System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations
US9830195B2 (en) Apparatus and method for controlling execution of processes in a parallel computing system
Elliott et al. Exploring the multitude of real-time multi-GPU configurations
TWI501156B (zh) 多頻時間切面組
Elliott et al. Gpusync: Architecture-aware management of gpus for predictable multi-gpu real-time systems
Sousa et al. Runtime reconfigurable bus arbitration for concurrent applications on heterogeneous MPSoC architectures
US11526767B2 (en) Processor system and method for increasing data-transfer bandwidth during execution of a scheduled parallel process
RO129804A0 (ro) Aparat, sistem şi metodă pentru a realiza o bandă configurabilă şi extensibilă de procesare de imagini

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170807

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180718

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180724

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181019

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190326

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190619

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: 20190709

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190807

R150 Certificate of patent or registration of utility model

Ref document number: 6571078

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250