JP2017091589A - プロセッサコア及びプロセッサシステム - Google Patents

プロセッサコア及びプロセッサシステム Download PDF

Info

Publication number
JP2017091589A
JP2017091589A JP2017032018A JP2017032018A JP2017091589A JP 2017091589 A JP2017091589 A JP 2017091589A JP 2017032018 A JP2017032018 A JP 2017032018A JP 2017032018 A JP2017032018 A JP 2017032018A JP 2017091589 A JP2017091589 A JP 2017091589A
Authority
JP
Japan
Prior art keywords
flag
processor
acc
data
processing
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
JP2017032018A
Other languages
English (en)
Other versions
JP6525286B2 (ja
Inventor
博徳 笠原
Hironori Kasahara
博徳 笠原
啓二 木村
Keiji Kimura
啓二 木村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Waseda University
Original Assignee
Waseda University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Waseda University filed Critical Waseda University
Publication of JP2017091589A publication Critical patent/JP2017091589A/ja
Application granted granted Critical
Publication of JP6525286B2 publication Critical patent/JP6525286B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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, look ahead
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Abstract

【課題】各構成要素の制御オーバーヘッドを低減可能にするプロセッサコアを提供する。【解決手段】プロセッサコアは、複数の構成要素とデータ領域及び同期フラグ領域を備えるメモリとを備える。第1構成要素は、所定の処理を完了するとともに、処理後のデータをデータ領域に格納し、さらに処理の完了を示すフラグを同期フラグ領域に書き込み、第2構成要素は、フラグが書き込まれたことを確認すると、第2構成要素がデータ領域に格納された処理後のデータを読み込み、第2構成要素が読み込んだ命令の実行を開始し、命令の実行完了後に、命令の実行後のデータをデータ領域に格納し、さらに命令の完了を示すフラグを同期フラグ領域に書き込む。【選択図】図10

Description

本出願は、平成23年(2011年)11月4日に出願された日本出願である特願2011−242824の優先権を主張し、その内容を参照することにより、本出願に取り込む。
本発明は、プロセッサコア及びプロセッサシステムに関する。
プロセッサシステム、特にマルチコアプロセッサシステムを構成要素として含む計算機(コンピュータ)の特定機能の処理能力を向上させると共に消費電力を低く抑えるために、アクセラレータ(以下、「ACC」という。)と呼ばれるハードウェアモジュールがプロセッサシステムに組み込まれる。ACCとは、例えばグラフィック表示を高速化するためのグラフィックアクセラレータ、三次元表示を高速化するための3Dアクセラレータ等である。
このようなACCをプロセッサシステムに接続する方式として、従来密結合型の接続方式と、疎結合型の接続方式とがある。
密結合型の接続方式とは、ACCとCPU(Central Processing Unit、汎用プロセッサ、以下「プロセッサ」という。)とを一体化させる又は一体化に近い態様で接続させる方式である。この密結合型の接続方式では、ACCとプロセッサとが密接に連係して機能し、ACCを起動・制御するためのオーバーヘッドが低いという利点がある。これにより、ショートベクタ処理(処理データ量が比較的少ないアクセラレーション処理)等、ACCにおける実行時間が短い場合でも、ACCを効率良く使用できるという利点がある。
しかし、この密結合型の接続方式では、新たにプロセッサにACCを接続する場合、接続されるACCに応じてプロセッサの命令セットを拡張する必要があるという問題がある。この拡張された命令セットには、例えば、非特許文献1に開示されるような、Streaming SIMD Extensions(SSE)等がある。
また、密結合型の接続方式の範疇に入る技術として、コプロセッサのようにプロセッサに直接ACCを接続する接続方式に関する技術が、例えば非特許文献2に開示されている。この方式は、命令セットの拡張を必要としないが、処理単位(アクセラレータ命令)ごとのコプロセッサ呼び出しが必要で、そのためにより大きなオーバーヘッドが必要となり、全体として演算速度向上に障害となるという問題がある。
一方、疎結合型の接続方式とは、例えば、非特許文献3に開示されるような、ACCをプロセッサの外部バスに接続させるGraphics Processing Unit(GPU)のような方式、また、非特許文献4に開示されるような、ACCをプロセッサの内部バスに接続させるOpen Multimedia Application Platform(OMAP)のような方式である。この疎結合型の接続方式では、ACCとプロセッサとが別個に設けられるので、外部バス接続方式か、内部バス接続方式かで差はあるものの、ACC用の演算器やメモリを潤沢に確保でき、巨大なデータに対する規則的な演算処理に適しているという利点がある。
また、疎結合型の接続方式では、命令セットの拡張も必要としない。
しかし、疎結合型の接続方式では、処理単位(アクセラレータ命令)ごとのACC呼び出しやデータ転送が必要で、そのためにより大きなオーバーヘッドが必要となり、全体として演算速度が向上できないという問題がある。そのため、規則的でない演算処理には適していない。
また、上記のマルチコアプロセッサシステムとは複数のプロセッサコアから構成されたプロセッサシステムであり、各プロセッサコアはプロセッサ及び必要な場合には上記のACCを備える。
マルチコアプロセッサシステムでは、複数のプロセッサコアで処理を並列化することによって消費電力の低減とともに演算処理能力を向上させている。そのために、一つのプロセッサからなるプロセッサシステム上でのみ動作可能な逐次処理プログラムを、複数のプロセッサコアより成るいわゆるマルチコアプロセッサ上で並列動作できる並列処理プログラムに変換する並列化コンパイラが、逐次処理の入力プログラムを解析し、当該入力プログラム中から並列に動作可能な部分を抽出し、当該部分の演算処理を複数のプロセッサに割り当てることによって、上述のように一つのプロセッサから成るプロセッサシステムに比べて処理能力を向上させている。
このようなマルチコアプロセッサシステム、特に汎用プロセッサと特定用途プロセッサ(本願におけるACCなど)を含むプロセッサコアを複数持つマルチコアプロセッサシステムのアーキテクチャおよびマルチコアプロセッサ上で並列動作できる並列処理プログラムを生成する並列化コンパイラに関連する技術として、特許文献1〜4に開示された技術等が知られている。
特許文献1には、多様な種類のプロセッサコアを搭載するマルチコアプロセッサシステムにおいて、処理対象となる逐次処理の入力プログラムから自動的に並列性を持つタスクを抽出し、各プロセッサコアの特性に合わせて当該タスクを配置することで当該プロセッサコアを効率よく動かし、さらに当該プロセッサコアの処理量を見積もることで動作周波数や電源電圧を最適化するコードを生成し、目的プログラムに付加するコンパイラ及びその最適化を可能とするマルチプロセッサシステムに関する技術が開示されている。
特許文献2には、命令セット及び構成の異なるプロセッサエレメント(プロセッサ等)を複数備えたヘテロジニアス・マルチプロセッサシステムにおいて、特定のプロセッサエレメントのリソースが不足するのを防いで、マルチプロセッサシステム全体の処理能力を向上させる技術が開示されている。
特許文献3には、多様なプロセッサコアを集積するマルチプロセッサシステムにおいて、当該プロセッサコアを効率よく動作させるプログラムの分割配置および制御コードを生成する複数コンパイラ連携プログラム並列化手法により、当該プロセッサシステムの性能を最大限生かしつつ、低電力にて効率よく処理することを可能とする技術が開示されている。
特許文献4には、複数のプロセッサコアにそれぞれデータ転送機構を備えたマルチコアプロセッサにおいて、プロセッサコア間でのデータ転送のオーバーヘッドを低減し、同時にコンパイラによるデータ転送最適化を行いやすくすることにより、プロセッサ全体の処理能力を向上させる技術が開示されている。
特開2006−293768号公報 特開2007−328415号公報 特開2007−328416号公報 特許4476267号公報
S.Thakkar,T.Huff,"The Internet Streaming SIMD Extensions", Intel Technology Journal Q2,1999. M.Awaga, H.Takahashi,"The uVP 64−Bit Vector Coprocessor: A New Implementation of High Performance Numerical Computation", IEEE Micro, Vol.13, No.5, October 1993. "NVIDIA CUDA C Programming Guide Version 3.2",2010. "OMAP−L137 Application Processor System Reference Guide", Texas Instruments, March,2010.
しかしながら、前述のヘテロジニアス・マルチコアプロセッサは、汎用プロセッサコアを有する一又は複数のプロセッサコアとACCなど特定用途プロセッサを含む一又は複数のプロセッサコアにより構成される。しかし、このヘテロジニアス・マルチコアプロセッサよりもさらに消費電力および演算処理能力を向上させるためには、プロセッサコアの中に汎用プロセッサとACCなどの特定用途プロセッサとを併存させ、そのように構成されたプロセッサコアを複数有するマルチコアプロセッサを構成することが必要である。
このようなマルチコアプロセッサシステムに搭載される各プロセッサコア内部又は外部に上記ACCを備える場合においても、前述の密結合型及び疎結合型のいずれかの方式を採用することとなる。
しかし、前述の従来の密結合型あるいは疎結合型の接続方式では、前述したように命令セットの拡張が必要となることやデータ転送などに伴う処理オーバーヘッドの増加などいくつかの問題があった。
例えば、上記の密結合の接続方式では、ACCを新たに接続する場合、接続されるACCに応じて、プロセッサの命令セットを拡張する必要があった(例えば、Streaming SIMD Extensions等)。また、特にプロセッサがRISC(Reduced Instruction Set Computer)型プロセッサである場合、限られた命令長による命令エンコーディングが困難であった。特に、新たに命令セットを拡張する場合には、命令セットの拡張とそのためのハードウェア(例えば、命令解読部やプロセッサ制御部など)の大幅な拡張が必要であった。
また密結合の接続方式では、プロセッサとACCとが一体化されるので、一度に多くのデータを要求するACCに対して十分な量のデータを供給するためのレジスタをACC用に確保できないという問題があった。そのため、ACCに絶えずデータを投入することができず演算器の使用効率が低かった。
なお、コプロセッサのようにプロセッサに直接接続する接続方式では、プロセッサの命令セットを拡張する必要はない。しかしながら、命令の処理単位毎にコプロセッサを呼び出すため、制御オーバーヘッドが大きかった。
一方、上記の疎結合の接続方式では、密結合の接続方式に比べて、ACCとプロセッサとの間の物理的距離が遠いので、ACCの制御のオーバーヘッドやACCへのデータ転送のオーバーヘッドが著しく大きかった。
本発明は、上述した課題を考慮したものであって、複数の構成要素を備えるプロセッサコアにおいて、各構成要素の制御オーバーヘッドを低減可能にするプロセッサコア及びプロセッサシステムを提供することを目的とする。
上記課題を解決するために、例えば特許請求の範囲に記載の構成を採用する。
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、処理を実行する複数の構成要素と、メモリと、前記複数の構成要素及び前記メモリを接続する結合網とを有するプロセッサコアであって、前記メモリは、前記複数の構成要素がそれぞれ実行するタスクを予め記憶する命令領域と、前記複数の構成要素間で各々の動作を同期させるためのフラグを記憶する同期フラグ領域と、前記複数の構成要素のそれぞれが処理に用いるデータ及び処理後のデータが格納されるデータ領域とを有し、前記複数の構成要素は、それぞれ、前記プロセッサコアの起動時に、前記命令領域に記憶された前記それぞれの構成要素に対応したタスク中の命令を読み込み、当該読み込んだ命令に従って動作し、前記複数の構成要素のうちの第1構成要素は、所定の処理を完了するときに、当該所定の処理後のデータを前記データ領域に格納し、さらに当該所定の処理の完了を示すフラグを前記同期フラグ領域に書き込み、前記複数の構成要素のうちの前記第1構成要素とは異なる第2構成要素は、前記同期フラグ領域に当該フラグが書き込まれたことを確認したことに応じて、前記第2構成要素が前記データ領域に格納された前記処理後のデータを読み込み、前記第2構成要素が読み込んだ命令の実行を開始し、当該命令の実行完了後に、当該命令の実行後のデータを前記データ領域に格納し、さらに当該命令の完了を示すフラグを前記同期フラグ領域に書き込むことを特徴とする。
本発明の一実施形態によれば、複数の構成要素が互いの同期制御に時間を費やすことなく、それぞれ自律的に動作することができるので、各構成要素の制御オーバーヘッドを低減可能にすることができる。
本発明の実施形態のマルチコアプロセッサシステムの構成例を示す図である。 本発明の実施形態のACCの第1の構成例及びACCを含むプロセッサコアの構成例を示す図である。 本発明の実施形態のACCの第2の構成例及びACCを含むプロセッサコアの構成例を示す図である。 本発明の実施形態のACCの第3の構成例及びACCを含むプロセッサコアの構成例を示す図である。 本発明の実施形態のACCの第4の構成例及びACCを含むプロセッサコアの構成例を示す図である。 本発明の実施形態のフラグ書込・確認器の構成例を示す図である。 本発明の実施形態のフラグ書込・確認器によるフラグセット・チェックの動作の概要を示す図である。 本発明の実施形態のマルチコアプロセッサシステムにおいて実行されるプログラムの参考例を示す図である。 参考例に係るプログラムを実行時の処理の流れを示す図である。 本発明の実施形態のマルチコアプロセッサシステムにおいて実行されるプログラムの第1の例を示す図である。 第1の例に係るプログラムの実行時の処理の流れを示す図である。 第1の例に係るプログラムの実行時の処理の流れの変形例を示す図である。 本発明の実施形態のマルチコアプロセッサシステムにおいて実行されるプログラムの第2の例を示す図である。 第2の例に係るプログラムの実行時の処理の流れを示す図である。 本発明の実施形態のマルチコアプロセッサシステムにおいて実行されるプログラムの第3の例を示す図である。 第3の例に係るプログラムの実行時の処理の流れを示す図である。 本発明の実施形態のマルチコアプロセッサシステムにおいて実行されるプログラムの第4の例の実行時の処理の流れを示す図である。 本発明の実施形態のマルチコアプロセッサシステムにおいて実行されるプログラムの第5の例の実行時の処理の流れを示す図である。 本発明の実施形態の並列化コンパイラが実行する処理のフローチャートである。
以下、本発明の実施の形態について図面を参照して説明する。
図1は、本発明の実施形態のマルチコアプロセッサシステム(プロセッサシステム)1の構成例を示す図である。
図1に示すマルチコアプロセッサシステム1は、1枚の半導体チップ2上に設けられ汎用プロセッサ、DTU、メモリ以外にACCを含む複数のプロセッサコア10−1〜10−n、ACC20、データ転送ユニット(Data Transfer Unit:DTU)30、及びオンチップ集中共有メモリ40と、半導体チップ2外部のオフチップ集中共有メモリ50とを備える。各プロセッサコア10−1〜10−nは、共有バス等のプロセッサコア間結合網(バス)によって接続される。なお、オンチップ集中共有メモリ40と、オフチップ集中共有メモリ50とのいずれか一方又は両方を備えてもよい。
本実施形態では、各プロセッサコア10−1〜10−nの構成が同一のホモジニアス・マルチコアプロセッサシステム1の構成例を示す。このため、プロセッサコア10−1の構成についてのみ説明し、他のプロセッサコア10−2〜10−nについての説明を省略する。なお、本発明は、ホモジニアス・マルチコアプロセッサシステムだけでなく、ヘテロジニアス・マルチコアプロセッサシステムにも適用可能である。
プロセッサコア10−1は、プロセッサ11、アクセラレータ(ACC)12、DTU13、分散共有メモリ(Distributed Shared Memory:DSM)14、ローカルメモリ(Local Memory:LM)15、バスインターフェース16、FVレジスタ(Frequency/Voltage control Register:FVR)17を備える。
プロセッサ11は、各種演算処理を実行する中央処理装置である。
ACC12は、特定機能を高速且つ低消費電力で処理できるACCである。本実施形態のACC12は、プロセッサ11からの指示がなくても、自律的に動作する。このACC12の詳細については後述する。
DTU13は、後述する同期フラグチェックによる命令列の実行、同期フラグの書き込み等の機能を持つ一種のDirect Memory Access Controller(DMAC)であり、ACC12、DSM14、LM15又は他のプロセッサコア10−2〜10−nのDSM14との間でデータの転送を実行するデータ転送装置である。本実施形態のDTU13は、プロセッサ11からの単一の指示によって動作を開始し、その後は自律的に動作する。このDTU13の詳細についても後述する。ローカルメモリ15は、一つのプロセッサのみで使用されるデータを格納し、分散共有メモリ14は、複数のプロセッサで共有されるデータを格納する。
DSM14は、全てのプロセッサコア10−1〜10−nからアクセス可能な分散共有メモリである。プロセッサコア10−1〜10−nの持つ各々のDSM14は、全プロセッサコア10−1〜10−nが共有する一つのメモリマップに配置され、このメモリマップを通して、全プロセッサ10−1〜10−nは各プロセッサコア10−1〜10−nの持つDSM14にアクセスする。このDSM14は、自又は他のプロセッサ11或いはDTU13により計算結果を受け渡すために使用される。このDSM14は、命令領域14−1、同期フラグ領域14−2、データ領域14−3を備える。
また、例えばプロセッサコア10−1内のLM15は、プロセッサコア10−1のプロセッサ11、ACC12、DTU13によってのみアクセス可能で、他のプロセッサコア10−2〜10−nからアクセス不可能なローカルメモリである。このLM15は、命令領域15−1、同期フラグ領域15−2、データ領域15−3を備える。
バスインターフェース16は、他のプロセッサコア10−2〜10−n、ACC20、DTU30、オンチップ集中共有メモリ40、オフチップ集中共有メモリ50との間でデータを通信するためのインターフェースである。
FVR17は、プロセッサ11に対する供給電圧や動作周波数を決定する周波数及び/又は電源電圧制御を実行するためのレジスタである。
ACC20は、各プロセッサコア10−1〜10−nのプロセッサ11の外部バスに接続され、プロセッサ11の処理を代行するGPU等のアクセラレータである。
DTU30は、各プロセッサコア10−1〜10−nのプロセッサ11の外部バスに接続され、各プロセッサコア10−1〜10−nのLM15とDSM14、他プロセッサコア上のDSM14、オンチップ集中共有メモリ40、オフチップ集中共有メモリ50との間でのデータの転送及び各プロセッサコア10−1〜10−nのDSM14、ACC20、オンチップ集中共有メモリ40、オフチップ集中共有メモリ50との間でのデータの転送を実行するオプショナルなデータ転送装置である。
オンチップ集中共有メモリ40は、各プロセッサコア10−1〜10−nに接続され、全てのプロセッサコア10−1〜10−nによって共有される半導体チップ2上のメモリである。このオンチップ集中共有メモリ40は、命令領域40−1、同期フラグ領域40−2、データ領域40−3を有する。オンチップ集中共有メモリ40は、DSMに格納できない共有データや、ダイナミックスケジューリングに必要なタスクキューなどの情報を格納する。
オフチップ集中共有メモリ50は、各プロセッサコア10−1〜10−nに接続され、全てのプロセッサコア10−1〜10−nによって共有される半導体チップ2外部のオプショナルなメモリである。このオフチップ集中共有メモリ50は、命令領域、同期フラグ領域、データ領域(いずれも不図示)を必要に応じて有してもよい。また、オフチップ集中共有メモリ50は、オンチップ集中共有メモリ40、DSM14とともに他のマルチコアプロセッサシステム(マルチプロセッサチップ)が共存している場合には、他のマルチコアプロセッサからもアクセスできるように構成することが可能である。オフチップ集中共有メモリ50は、オンチップ集中共有メモリ40に収まりきらないデータを格納する。
以上に示す構成において、命令領域14−1、15−1、40−1には、後述する並列化コンパイラによって生成されるプロセッサ11、ACC12、DTU13用の命令(プログラム)が格納される。ACC12用の命令とは、例えばACC12に対する加算、乗算のような各種演算命令、フラグセット命令、フラグチェック命令及びフラグチェックに基づく命令列実行開始命令である。またDTU13用の命令とは、例えばDTU13に対するデータ転送の命令、フラグセット命令、フラグチェック命令及びフラグチェックに基づく命令列実行開始命令である。
なお、プロセッサコア10−1で実行される命令は、原則的に、プロセッサコア10−1の命令領域14−1、15−1に配置される。但し、命令のサイズが大きい場合は、オンチップ集中共有メモリ40の命令領域40−1に配置される。この場合、プロセッサコア10−1は、命令領域40−1に配置された命令を読み込む(ロードする)。一方、ACC20、DTU30用の命令は、オンチップ集中共有メモリ40の命令領域40−1あるいはオフチップ集中共有メモリ50の命令領域(不図示)に配置される。
同様に、同期フラグ領域14−2、15−2、40−2には、並列化コンパイラによって生成されるプロセッサ11、ACC12、DTU13用の同期フラグが格納される。同期フラグとは、プロセッサ11、ACC12、DTU13がお互いに同期を取りながら連係して動作するために用いられるフラグ(データ)である。同期フラグ領域14−2、15−2、40−2には、プロセッサコア10−1で実行される処理の纏まり(例えばタスク)毎の同期フラグが配置される。処理の纏まりがループ処理である場合には、ループ処理の回転回数に応じて、バージョン番号を付した同期フラグを配置してもよい。詳細は後述する。一方、ACC20、DTU30用の同期フラグは、オンチップ集中共有メモリ40の同期フラグ領域40−2又はオフチップ集中共有メモリ50の同期フラグ領域(不図示)に配置される。
データ領域14−3、15−3、40−3には、プロセッサ11、ACC12、DTU13が処理に用いるデータ及び処理後のデータが格納される。一方、ACC20、DTU30が処理に用いるデータ及び処理後のデータは、オンチップ集中共有メモリ40のデータ領域40−3あるいはオフチップ集中共有メモリ50の同期フラグ領域(不図示)に格納される。
以上のように、プロセッサコア10−1上のプロセッサ11、ACC12、DTU13は、自プロセッサコア10−1上のDSM14、及びLM15を共有している。
また、各プロセッサコア10−1〜10−n上のプロセッサ11、ACC12、DTU13は、各プロセッサコア10−1〜10−n上のDSM14、オンチップ集中共有メモリ40を共有している。
なお、マルチコアプロセッサシステム1は、自システムの用途に応じて、DSM14、LM15、オンチップ集中共有メモリ40、オフチップ集中共有メモリ50のうちの必要なメモリのみ有してもよい。
また、マルチコアプロセッサシステム1は、1個のプロセッサコアのみからなる場合もあり、その場合には、ACC20、DTU30などは不要である。さらに、マルチコアプロセッサシステム1における複数のプロセッサコア10−1〜10−nの中にはACC12を有しない汎用プロセッサコアを含むこともある。
図2は、本発明の実施形態のACC12の第1の構成例及びACC12を含むプロセッサコアの構成例を示す図である。なお、以下では図1と同様の構成要素には同一の符号を付して重複する説明を適宜省略する。図2において、黒矢印は、同期フラグの通信を示す。白矢印は、同期フラグを除く命令およびデータの伝送のための通信を示す。各矢印の太さは、通信速度の度合いを示す。
図2において、ACC12は、ACC本体121、ACCレジスタ/ローカルメモリ122(以下、単に「ACCレジスタ122」という。)、ロード・ストアユニット123、制御レジスタファイル124、FVR125を備え、プロセッサコア内結合網(バスやスイッチングネットワーク等)18を介して、プロセッサ11、LM15、DSM14、DTU13、FVR17と接続される。
ACC本体121は、LM15又はDSM14に格納されたACC命令列を使用して、特定の処理のみを実行するACC本体である。なお、ACC命令列とは、予め並列化コンパイラによって生成されたACC12用のプログラム(複数の命令列を順次実行するプログラム)である。
ACCレジスタ122は、ACC本体121に対してデータを供給するためのレジスタ等の記憶部である。特に、ACCがACC20(GPU等、図1参照)である場合には、ACCレジスタはACC20が独自に有するローカルメモリを指す。このACCレジスタ122は、ACC本体121及びロード・ストアユニット123によってのみアクセス可能であって、プロセッサコア内結合網18を介して接続されるプロセッサ11等からはアクセス不可能である。なお、ACCレジスタ122は、ACC12外部の構成(例えば、DTU13)によって直接アクセス可能でもよい。
このACCレジスタ122は、ACC本体121に高速にデータを供給するベクトルレジスタ等の高速レジスタであることが好ましい。
ロード・ストアユニット123は、ACCレジスタ122と、DSM14、LM15との間でデータの転送を実行するデータ転送装置である。このロード・ストアユニット123は、ベクトルロードと呼ばれる命令によって、LM15又はDSM14内の連続したデータを、ACCレジスタ122に読み込む。また、ベクトルストアと呼ばれる命令によって、ACCレジスタ122内の連続したデータを、LM15又はDSM14に格納する(ストアする)。このロード・ストアユニット123は、フラグ書込・確認器123Aを備える。フラグ書込・確認器123Aは、LM15又はDSM14等のメモリ上の所定(任意)の領域(アドレス空間)のアドレス(以下、「所定のアドレス」という。)に同期フラグを書き込む(セットする)又はメモリ上の所定のアドレスに書き込まれた同期フラグを確認する(チェックする)機能部である。
制御レジスタファイル124は、複数の制御レジスタから構成されるレジスタ群である。この制御レジスタファイル124は、ACC本体121を制御するための制御レジスタ、ロード・ストアユニット123を制御するための制御レジスタを含む。
FVR125は、ACC本体121に対する供給電圧やクロック周波数を決定し、また電源遮断機能を有する周波数・電源電圧(FV)制御を行うためのオプショナルなレジスタである。ACC12は、フラグチェックの開始後、FVR125に設定された値に応じて、ACC12への供給電圧やクロック周波数を低減又は遮断する。これにより電力制御が可能になる。
以上に示す構成のACC12は、プロセッサ11、DTU13と連係して動作する。この連係動作について簡単に説明する。
(ACC12とプロセッサ11との連係動作)
まず、ACC12とプロセッサ11との連係動作の一例として、ロード・ストアユニット123がLM15又はDSM14にデータを格納すると、プロセッサ11が格納されたデータを用いた処理を開始する動作を説明する。
ロード・ストアユニット123は、ACC本体121によってACCレジスタ122に格納されたアクセラレーション処理後のデータを、LM15のデータ領域15−3又はDSM14のデータ領域14−3に格納する。そうすると、フラグ書込・確認器123Aは、当該ストア処理に対応する同期フラグ(データ)を、LM15又はDSM14の所定のアドレス、すなわち15−2又は14−2に書き込む。同期フラグがLM15又はDSM14の所定のアドレスに書き込まれるまでの間、プロセッサ11は、繰り返しLM15又はDSM14の同期フラグに割り当てられた所定のアドレス(15−2又は14−2)をチェックする。プロセッサ11は、書き込まれた同期フラグを確認(検出)すると、15−3又は14−3に格納されたデータを用いて、自身の処理を開始する。このようにして、ACC12とプロセッサ11とは連係動作する。
次に、ACC12とプロセッサ11との連係動作の別の例として、プロセッサ11がLM15又はDSM14にデータを格納すると、ロード・ストアユニット123が格納されたデータのACCレジスタ122への読み込みを開始する動作を説明する。
プロセッサ11は処理後のデータを、LM15のデータ領域15−3又はDSM14のデータ領域14−3に格納する。そうすると、プロセッサ11は、当該格納処理に対応する同期フラグ(データ)を、LM15又はDSM14の所定のアドレス、すなわち15−2又は14−2に書き込む。同期フラグがLM15又はDSM14の所定のアドレスに書き込まれるまでの間、フラグ書込・確認器123Aは、繰り返しLM15又はDSM14の同期フラグに割り当てられた所定のアドレス(15−2又は14−2)をチェックする。フラグ書込・確認器123Aは、書き込まれた同期フラグを確認(検出)すると、15−3又は14−3に格納されたデータをACCレジスタ122に格納する。なお、ACC本体121は、ACCレジスタ122に格納されたデータを用いて自身の処理を開始する。このようにして、ACC12とプロセッサ11とは連係動作する。
(ACC12とDTU13との連係動作)
まず、ACC12とDTU13との連係動作の一例として、DTU13がLM15又はDSM14へのデータ転送処理を終了すると、ロード・ストアユニット123が転送されたデータのACCレジスタ122への読み込みを開始する動作を説明する。
DTU13は(例えばオンチップ集中共有メモリ40から)LM15のデータ領域15−3へのデータ転送を終了すると、当該データ転送処理に対応する同期フラグを、LM15又はDSM14の所定のアドレス或いは命令で指定されるアドレス、すなわち15−2又は14−2に書き込む。同期フラグがLM15又はDSM14の所定のアドレスに書き込まれるまでの間、フラグ書込・確認器123Aは、繰り返しLM15又はDSM14の同期フラグに割り当てられた所定のアドレス(15−2又は14−2)をチェックする。フラグ書込・確認器123Aが書き込まれた同期フラグを確認すると、ロード・ストアユニット123は、LM15のデータ領域15−3に転送されたデータのACCレジスタ122への読み込みを開始する。その後、ACC本体121は、アクセレーション処理を実行する。具体的には、ACC12用のプログラムに含まれるフラグチェック命令、データロード命令、アクセラレーション処理命令が順に実行される。このようにして、ACC12とDTU13とは連係動作する。
次に、ACC12とDTU13との連係動作の別の例として、ロード・ストアユニット123がLM15又はDSM14にデータを格納すると、DTU13が格納されたデータを用いた処理を開始する動作を説明する。
ロード・ストアユニット123は、ACC本体121によってACCレジスタ122に格納されたアクセラレーション処理後のデータを、LM15のデータ領域15−3又はDSM14のデータ領域14−3に格納する。そうすると、フラグ書込・確認器123Aは、当該ストア処理に対応する同期フラグ(データ)を、LM15又はDSM14の所定のアドレス、すなわち15−2又は14−2に書き込む。同期フラグがLM15又はDSM14の所定のアドレスに書き込まれるまでの間、DTU13は、繰り返しLM15又はDSM14の同期フラグに割り当てられた所定のアドレス(15−2又は14−2)をチェックする。DTU13は、書き込まれた同期フラグを確認(検出)すると、15−3又は14−3に格納されたデータを用いて、データ転送処理を開始する。このようにして、ACC12とDTU13とは連係動作する。
また、プロセッサ11とDTU13との連係動作について説明する。DTU13は、プロセッサコアにおいて処理に必要なデータを他のプロセッサコアの分散共有メモリ14、他のプロセッサコアのオンチップ集中共有メモリ40又はオフチップ集中共有メモリ50から自プロセッサコアのローカルメモリ15あるいは分散共有メモリ14に読み込んだり、また自プロセッサコアのローカルメモリ15あるいは分散共有メモリ14に格納されているデータを他のメモリに転送したりするが、その動作はプロセッサ11が最初のデータ転送指示をDTU13にすることにより、DTU13の自律的動作に必要なプログラムをローカルメモリ15などから読み込み実行する。このデータ転送におけるプロセッサ11とDTU13との連携動作については、特許文献4に詳述されている。
以上に示すように、第1の構成例のACC12と、プロセッサ11と、DTU13とは、LM15又はDSM14に対するフラグセット・チェックによって、同期を取って連係動作する。
図3は、本発明の実施形態のACC12の第2の構成例及びACC12を含むプロセッサコアの構成例を示す図である。なお、以下では図1及び図2と同様の構成要素には同一の符号を付して重複する説明を適宜省略する。
図3に示すACC12は、ロード・ストアユニットを持たず、従ってフラグ書込・確認器121A(図2における123Aに相当)をACC本体121に備えている点において、図2に示すACC12と異なる。なお、フラグ書込・確認器121Aは、フラグ書込・確認器123Aと同様に、LM15又はDSM14等のメモリ上の所定のアドレスに同期フラグを書き込む又はメモリ上の所定のアドレスに書き込まれた同期フラグを確認する機能を有する。また、プロセッサ11やDTU13がACCレジスタ122にデータを読み書きすることによって、図2のロード・ストアユニット123の機能を代替する。
以上に示す構成のACC12は、プロセッサ11、DTU13と連係して動作する。この連係動作について簡単に説明する。
(ACC12とプロセッサ11との連係動作)
まず、ACC12とプロセッサ11との連係動作の一例として、プロセッサ11が所定の処理を終了すると、ACC12が処理を開始する動作を説明する。
プロセッサ11が所定の処理を終了すると、処理結果のデータをACCレジスタ122に格納する。その後、プロセッサ11は、当該所定の処理に対応する同期フラグを、LM15又はDSM14の所定のアドレス、すなわち15−2又は14−2に書き込む。同期フラグがLM15又はDSM14の所定のアドレスに書き込まれるまでの間、フラグ書込・確認器121Aは、繰り返しLM15又はDSM14の同期フラグに割り当てられた所定のアドレス(15−2又は14−2)をチェックする。フラグ書込・確認器121Aが書き込まれた同期フラグを確認すると、ACC本体121は、ACCレジスタ122に格納されたプロセッサ11の処理結果のデータを用いて、自身の処理を開始する。具体的には、ACC12用のプログラムに含まれるフラグチェック命令、データロード命令、アクセラレーション処理命令が順に実行される。このようにして、ACC12とプロセッサ11とは連係動作する。
次に、ACC12とプロセッサ11との連係動作の別の例として、ACC12が所定の処理を終了すると、プロセッサ11が処理を開始する動作を説明する。
ACC本体121が処理を終了すると、処理結果のデータをACCレジスタ122に書き込む。その後、フラグ書込・確認器121Aは当該所定の処理に対応する同期フラグを、LM15又はDSM14の所定のアドレス、すなわち15−2又は14−2に書き込む。同期フラグがLM15又はDSM14の所定のアドレスに書き込まれるまでの間、プロセッサ11は、繰り返しLM15又はDSM14の同期フラグに割り当てられた所定のアドレス(15−2又は14−2)をチェックする。プロセッサ11は、書き込まれた同期フラグを確認すると、ACCレジスタ122に格納された処理結果のデータを読み込んで、自身の処理を開始する。このようにして、ACC12とプロセッサ11とは連係動作する。
(ACC12とDTU13との連係動作)
次に、ACC12とDTU13との連係動作の一例として、ACC本体121が処理を終了すると、DTU13がデータ転送を開始する動作を説明する。
ACC本体121が所定の処理を終了すると、処理結果のデータをACCレジスタ122に送信する。その後、フラグ書込・確認器121Aは当該所定の処理に対応する同期フラグを、LM15又はDSM14の所定のアドレス、すなわち15−2又は14−2に書き込む。同期フラグがLM15又はDSM14の所定のアドレスに書き込まれるまでの間、DTU13は他のデータ転送処理が終わった後に、繰り返しLM15又はDSM14の同期フラグに割り当てられた所定のアドレス(15−2又は14−2)をチェックする。DTU13は、書き込まれた同期フラグを確認すると、ACCレジスタ122に格納されたデータを読み込んで、LM15又はDSM14に転送する処理を開始する。このようにして、ACC12とDTU13とは連係動作する。
次に、ACC12とDTU13との連係動作の一例として、DTU13がデータ転送を終了すると、ACC本体121が処理を開始する動作を説明する。
DTU13は所定のデータ転送処理によってACCレジスタ122にデータを書き込む。その後、DTU13は、当該所定の処理に対応する同期フラグを、LM15又はDSM14の所定のアドレス、すなわち15−2又は14−2に書き込む。同期フラグがLM15又はDSM14の所定のアドレスに書き込まれるまでの間、フラグ書込・確認器121Aは、繰り返しLM15又はDSM14の同期フラグに割り当てられた所定のアドレス(15−2又は14−2)をチェックする。フラグ書込・確認器121Aが書き込まれた同期フラグを確認すると、ACC本体121は、ACCレジスタ122に書き込まれたデータを用いて、自身の処理を開始する。具体的には、ACC12用のプログラムに含まれるフラグチェック命令、データロード命令、アクセラレーション処理命令が順に実行される。このようにして、ACC12とDTU13とは連係動作する。
以上に示すように、第2の構成例のACC12と、プロセッサ11と、DTU13とは、LM15又はDSM14に対するフラグセット・チェックによって、同期を取って連係動作する。
図4は、本発明の実施形態のACC12の第3の構成例及びACC12を含むプロセッサコアの構成例を示す図である。なお、以下では図1〜図3に示した構成要素と同一の構成要素には同一の符号を付して重複する説明を適宜省略する。
図4に示すACC12は、フラグ書込・確認器121Aを備えたACC本体121、及び、フラグ書込・確認器123Aを備えたロード・ストアユニット123の両方を有する。
以上に示す構成のACC12では、ACC本体121と、ロード・ストアユニット123とはそれぞれ自律的に、且つ、互いに連係して動作する。また、ACC本体121、ロード・ストアユニット123は、プロセッサ11、DTU13とも連係して動作する。この連係動作について簡単に説明する。
(ACC本体121とロード・ストアユニット123の連係動作1)
まず、ACC本体121とロード・ストアユニット123の連係動作の第1の例として、ロード・ストアユニット123がLM15内のデータをACCレジスタ122に読み込む処理を終了すると、ACC本体121が処理を開始する動作を説明する。
ロード・ストアユニット123は、LM15内のデータをACCレジスタ122に読み込む処理を実行する。その後、フラグ書込・確認器123Aは、当該ロード処理に対応する同期フラグを、LM15又はDSM14の所定のアドレスに書き込む。その間、フラグ書込・確認器121Aは、繰り返しLM15又はDSM14へ同期フラグが書き込まれたかをチェックする。その後、フラグ書込・確認器121Aが書き込まれた同期フラグを確認すると、ACC本体121は、ACCレジスタ122に格納されたデータを用いて、自身の処理を開始する。このようにして、ACC本体121とロード・ストアユニット123とは連係動作する。
(ACC本体121とロード・ストアユニット123の連係動作2)
次に、ACC本体121とロード・ストアユニット123の連係動作の第2の例として、ACC本体121が処理を終了すると、ロード・ストアユニット123が処理後のデータをLM15に格納する動作を説明する。
ACC本体121が所定の処理を終了すると、処理結果のデータをACCレジスタ122に送信する。その後、フラグ書込・確認器121Aは当該所定の処理に対応する同期フラグを、LM15又はDSM14の所定のアドレスに書き込む。その間、フラグ書込・確認器123Aは、繰り返しLM15又はDSM14へ同期フラグが書き込まれたかをチェックする。フラグ書込・確認器123Aが書き込まれた同期フラグを確認すると、ロード・ストアユニット123は、ACCレジスタ122に格納されたデータを、LM15又はDSM14に転送する処理を開始する。その後、フラグ書込・確認器123Aは、命令で指定されたLM15、自プロセッサコア又は他プロセッサコア上のDSM14の所定のアドレスに、同期フラグを書き込む。このようにして、ACC本体121とロード・ストアユニット123とは連係動作する。
以上に示すように、第3の構成例のACC12では、ACC本体121とロード・ストアユニット123が、LM15又はDSM14を介したフラグセット・チェックによって、互いに同期を取って連係動作する。もちろん、プロセッサ11、DTU13と同期を取って連係動作することも可能である。これにより、ACC本体121がアクセラレーション処理を実行中に、ロード・ストアユニット123がデータを読み込み・格納することができる。また、プロセッサ11、DTU13、ACC本体121、ロード・ストアユニット123毎の独立した周波数・電源制御(FV制御)も可能である。
図5は、本発明の実施形態のACC12の第4の構成例及びACC12を含むプロセッサコアの構成例を示す図である。なお、以下では図4に示した構成要素と同一の構成要素には同一の符号を付して重複する説明を適宜省略する。
図5に示すACC12は、ACC内フラグ授受レジスタ126を有する点において、図4に示すACC12と異なる。
ACC内フラグ授受レジスタ126は、フラグ書込・確認器121A、123Aが同期フラグをセット及びチェックするためのACC12内部のレジスタである。
以上に示す構成のACC12では、ACC本体121と、ロード・ストアユニット123とはそれぞれ自律的に、且つ、互いに連係して動作する。また、ACC本体121、ロード・ストアユニット123は、プロセッサ11、DTU13とも連係して動作する。この連係動作について簡単に説明する。
(ACC本体121とロード・ストアユニット123の連係動作1)
まず、ACC本体121とロード・ストアユニット123の連係動作の第1の例として、ロード・ストアユニット123がLM15内のデータをACCレジスタ122に読み込む処理を終了すると、ACC本体121が処理を開始する動作を説明する。
ロード・ストアユニット123は、LM15内のデータをACCレジスタ122に読み込む処理を実行する。その後、フラグ書込・確認器123Aは、当該ロード処理に対応する同期フラグを、ACC内フラグ授受レジスタ126に書き込む。その間、ACC本体121は命令で指定された他の処理を実行し、他の処理が終了するとフラグチェック命令を実行する。具体的には、フラグ書込・確認器121Aが、繰り返しACC内フラグ授受レジスタ126へ同期フラグが書き込まれたかをチェックする。その後、フラグ書込・確認器121Aが書き込まれた同期フラグを確認すると、ACC本体121は、ACCレジスタ122に格納されたデータを用いて、自身の処理を開始する。自身の処理が終了すると、処理結果をACCレジスタ122に格納する。その後、フラグセット命令が実行される時に命令で指定された値を、ACC内フラグ授受レジスタ126の命令で指定された位置(アドレス)に書き込む。このようにして、ACC本体121とロード・ストアユニット123とは連係動作する。
(ACC本体121とロード・ストアユニット123の連係動作2)
次に、ACC本体121とロード・ストアユニット123の連係動作の第2の例として、ACC本体121が処理を終了すると、ロード・ストアユニット123が処理後のデータをLM15に格納する動作を説明する。
ACC本体121が所定の処理を終了すると、処理結果のデータをACCレジスタ122に送信する。その後、フラグ書込・確認器121Aは、当該所定の処理に対応する同期フラグを、ACC内フラグ授受レジスタ126に書き込む。その間、フラグ書込・確認器123Aは、繰り返しACC内フラグ授受レジスタ126へ同期フラグが書き込まれたかをチェックする。フラグ書込・確認器123Aが書き込まれた同期フラグを確認すると、ロード・ストアユニット123は、ACCレジスタ122に格納されたデータを、LM15又はDSM14に転送する処理を開始する。このようにして、ACC本体121とロード・ストアユニット123とは連係動作する。
以上に示すように、第4の構成例のACC12では、ACC本体121とロード・ストアユニット123が、ACC内フラグ授受レジスタ126を介したフラグセット・チェックによって、互いに同期を取って連係動作する。そのため、前述の第1〜第3の構成例のLM15又はDSM14を介したフラグセット・チェックと比較して、フラグセット・チェックに係るオーバーヘッドを低減することができる。
図6は、本発明の実施形態のフラグ書込・確認器121A(123A)の構成例を示す図である。図6に示すように、フラグ書込・確認器121Aは、アドレスレジスタ21、フラグ値レジスタ22、バスインターフェース23、条件値レジスタ24、比較器25、26、シーケンサ27を備える。
このフラグ書込・確認器121A(123A)の動作は、同期フラグを書き込む動作(フラグセット)と、同期フラグを確認する動作(フラグチェック)とに分けられるので、これらの動作の各々について説明する。
(フラグセット)
フラグ書込・確認器121Aは、LM15又はDSM14等のメモリ上の所定のアドレスに同期フラグを書き込む。具体的には、プロセッサ11が、フラグ書込・確認器121Aに、フラグアドレス(同期フラグを書き込むべきメモリ上のアドレス)、フラグ値(書き込むべき同期フラグの値)、及びフラグセットの指示を入力し、フラグ書込・確認器121Aは当該指示に従って動作する。
そうすると、アドレスレジスタ21、フラグ値レジスタ22には、フラグアドレス、フラグ値がそれぞれ書き込まれる。また、シーケンサ27には、フラグセットの指示が書き込まれる。バスインターフェース23は、これら入力された情報に基づいて、バスリクエストを発行し、指定されたメモリ上のアドレスに、指定された同期フラグの値を書き込む。
(フラグチェック)
一方、フラグ書込・確認器121Aは、LM15又はDSM14等のメモリ上の所定のアドレスにセットされた同期フラグを確認する。具体的には、まずフラグ書込・確認器121Aは、フラグアドレス(確認すべきメモリ上のアドレス)、フラグ値(確認すべき同期フラグの値)、及びフラグチェックの指示を入力する。
そうすると、アドレスレジスタ21、フラグ値レジスタ22には、フラグアドレス、フラグ値がそれぞれ書き込まれる。また、シーケンサ27には、フラグチェックの指示が書き込まれる。バスインターフェース23は、これら入力された情報のうちのフラグアドレス及びフラグチェック指示に基づいて、バスリクエストを発行し、指定されたメモリ上のアドレスに格納された同期フラグの値を読み取る。
バスインターフェース23によって読み取られたフラグ値(以下、「読取フラグ値」という。)は、比較器26に送られる。比較器26は、読取フラグ値と、フラグ値レジスタ22のフラグ値とを比較する。両者が一致する場合、一致する旨をシーケンサ27に出力し、両者が不一致である場合、不一致である旨をシーケンサ27に出力する。シーケンサ27は、比較器26の出力結果が不一致である場合には、バスインターフェース23に再読み取りを要求する。一方、比較器26の出力結果が一致である場合には、処理完了を通知する。
一方、同期フラグの値が所定の条件値と一致するか否かを確認する場合には、プロセッサ11は、フラグ書込・確認器121Aに、さらに同期フラグの条件値を入力する。条件値を指定することによって、特定処理の指示を通知可能となる。ここでいう特定処理とは、同期フラグの値が条件値である場合に実行される処理であって、例えば図2の制御レジスタファイル124の値に応じた処理である。そうすると、条件値レジスタ24には、同期フラグの条件値が書き込まれる。この場合、バスインターフェース23によって読み取られた読取フラグ値は、比較器25に送られる。比較器25は、読み取られたフラグ値と、条件値レジスタ24に格納された条件値とを比較する。両者が一致する場合、一致する旨をシーケンサ27に出力する。また、両者が不一致である場合、不一致である旨をシーケンサ27に出力する。シーケンサ27は、比較器25の出力結果が不一致である場合には、バスインターフェース23に再読み取りを要求する。一方、比較器25の出力結果が一致である場合には、特定処理の指示を通知する。
補足すると、フラグ書込・確認器121Aは、LM15又はDSM14等のメモリ上の所定のアドレスに同期フラグを書き込む場合、書き込まれるアドレスを変更することによって、多数の同期フラグを書き込むことができる。すなわち、ACC12の実行する処理の進行状況に応じて、進行経過を示す異なる複数のフラグを同期フラグ領域に書き込む(出力する)ことができる。各フラグには、ACC12が実行する処理に後続してプロセッサ11やDTU13によって実行すべき処理が対応付けられている。これにより、例えばプロセッサ11は、ACC12によって同期フラグ領域に書き込まれたフラグに対応付けられている後続して実行すべき処理を開始することができる。なお、プロセッサ11やDTU13も同様に、自身の実行する処理の進行状況に応じて、進行経過を示す異なる複数のフラグを同期フラグ領域に書き込むことができる。
図7は、本発明の実施形態のフラグ書込・確認器121A(123A)によるフラグセット・チェックの動作の概要を示す図である。ここでは、フラグセット・チェックの動作を7段階に分けて説明する。
段階(0)は、初期設定の段階である。すなわち、LM15の同期フラグ領域15−2には、フラグ変数A、フラグ変数B用のメモリ領域が確保されている。フラグ変数A、Bの値は、i(i=0等)で予め初期化される。
段階(1)において、プロセッサ11は、フラグ変数Aの値に(i+1)を書き込む。段階(2)において、段階(1)と前後して、DTU13は、フラグ変数Aの値が(i+1)に変化したかを、繰り返しチェックする。
段階(3)において、DTU13は、フラグ変数Aの値が(i+1)に変化した場合、データ転送を実行する。段階(4)において、DTU13は、データ転送を終了すると、フラグ変数Bの値に(i+1)を書き込む。
段階(5)において、段階(4)と前後して、ACC12は、フラグ変数Bの値が(i+1)に変化したかを、繰り返しチェックする。段階(6)において、ACC12は、フラグ変数Bの値が(i+1)に変化した場合、自身が実行すべきアクセラレーション処理を実行する。
以上に示すように、プロセッサ11とDTU13とは、フラグ変数Aを介して連係動作する。同様に、DTU13とACC12とは、フラグ変数Bを介して連係動作する。すなわち、プロセッサ11とACC12とDTU13は、LM15の同期フラグ領域15−2に格納されたフラグ変数A、Bを介して連係動作する。
なお、フラグ変数A、Bは、LM15以外に、DSM14、オンチップ集中共有メモリ40、オフチップ集中共有メモリ50に格納されてもよい。例えば、プロセッサコア10−1のDTU13がオンチップ集中共有メモリ40の同期フラグ領域40−2に同期フラグを書き込んでもよい。この場合、他のプロセッサコア10−2〜10−nのDTU13は、同期フラグ領域40−2に書き込まれた同期フラグを確認する。これにより、異なるプロセッサコア10−1〜10−n同士が、フラグ変数を介して連係して動作する。
図8は、本発明の実施形態のマルチコアプロセッサシステム1において実行されるプログラムの参考例を示す図である。ここでは、まず従来の手法によって実行されるプログラムを説明する。
図8に示すプログラム80において、外側for文は、DTU13がデータを読み込む、及び内側for文の処理結果データを格納するためのループ文である。一方、内側for文は、外側for文によって読み込まれたデータに対して、ACC12がアクセラレーション処理を実行するためのループ文である。
外側for文内のDTUロード文は、DTU13が、オフチップ集中共有メモリ50からACC12の処理可能な量のデータを、LM15に読み込むための命令文である。内側for文内のアクセラレータロード文は、ACC12が、LM15に読み込まれたデータの一部を、ACCレジスタ122に読み込むための命令文である。演算文は、ACC12が、アクセラレータロード文によって読み込まれたデータを用いて演算するための命令文である。アクセラレータストア文は、ACC12が演算文の演算結果を、LM15に格納するための命令文である。次繰り返しの準備文は、次ループの準備処理(次データのベースアドレス計算、ループカウンタ演算等)のための命令文である。外側for文内のDTUストア文は、DTU13が、LM15に格納された演算結果のデータを、オフチップ集中共有メモリ50に格納するための命令文である。図8のプログラムでは、ACCが処理すべきデータおよびACCによって処理されたデータを格納するメモリとしてLM15を用いることとしているが、もちろんLM15の代わりにDSM14を用いてもよい。具体的には、LM15を所有するプロセッサコア(例えばプロセッサコア10−1)がローカルで利用するデータの場合にはLM15を、他のプロセッサコア10−1〜10−nと共有するデータの場合にはDSM14を用いることができる。なお、LM15とDSM14とはコンパイラによって使い分けられる。
図9は、参考例に係るプログラムを実行時の処理の流れを示す図である。
まずステップ901において、プロセッサ11は、DTU13に対して駆動命令を出す(901)。そうすると、ステップ902において、DTU13は駆動開始し、ACC12の処理可能な量のデータを、オフチップ集中共有メモリ50からLM15に読み込む(902)。DTU13は、ロード処理を終了すると、ロード処理の終了をプロセッサ11に通知する。
ステップ903において、DTU13から当該通知を受けたプロセッサ11は、ACC12に対して駆動命令を出す(903)。そうすると、ステップ904において、ACC12は駆動開始し、ステップ902で読み込まれたデータの一部を用いて演算し、演算結果をLM15に格納する(904)。ACC12は、一連の処理を終了すると、処理終了をプロセッサ11に通知する。
ステップ905において、ACC12から当該通知を受けたプロセッサ11は、次の繰り返し処理の準備を実行する(905)。その後ステップ906において、ACC12に対して駆動命令を出す(906)。その後ステップ903〜906の処理を、内側for文のループの回数だけ繰り返す。
内側for文のループ処理を終了すると、ステップ907において、プロセッサ11は、DTU13に対して駆動命令を出す(907)。そうすると、ステップ908において、DTU13は駆動開始し、LM15に格納された演算結果のデータを、オフチップ集中共有メモリ50に格納する。その後ステップ901〜908の処理を、外側for文のループの回数だけ繰り返す。
以上説明してきたように、従来の手法によれば、プロセッサ11の処理とDTU13の処理とACC12の処理は、重複することなく逐次的に実行される。また、DTU13とACC12の動作は、プロセッサ11によって制御される。
図10は、本発明の実施形態のマルチコアプロセッサシステム1において実行されるプログラムの第1の例を示す図である。
図10に示すように、第1の例に係るプログラムは、プロセッサ11で実行されるプログラム100、DTU13で実行されるプログラム101、103、ACC12で実行されるプログラム102を含む。すなわち、図8に示す従来の手法によって実行されるプログラム80を、本発明の実施形態のプロセッサコア用に変換した(フラグセット文、フラグチェック文等を追加した)上で、プロセッサ11で実行されるプログラム100、DTU13で実行されるプログラム101、103、ACC12で実行されるプログラム102に分割したものである。
なお、各プログラム100、101、102、103は、フラグセット文及びフラグチェック文を含む。フラグチェック文は、LM15又はDSM14等のメモリ上の所定のアドレスに書き込まれた同期フラグ変数(例えばA)の値が、予め設定された比較値と一致するまで繰り返し確認する命令文である。同期フラグ変数にフラグが書き込まれた場合、当該フラグに対応する以降の命令文に進む。一方、フラグセット文は、LM15又はDSM14等のメモリ上の所定のアドレスにフラグを書き込む、具体的には同期フラグ変数にデータを書き込む(同期フラグ変数に書き込まれたデータを更新する)ための命令文である。フラグを書き込んだ後、以降の命令文に進む。
また、各プログラム100、101、102、103は、後述する並列化コンパイラによって予め生成され、LM15、DSM14等のメモリ上の所定のアドレス、すなわち15−1、14−1等に配置される。
なお、DTU13及びACC12は、プロセッサ11による制御レジスタファイル124へのデータの書込みや、マルチコアプロセッサシステム1の起動に応じて起動される。その後、プロセッサ11とは独立して自律的にプログラムを実行する。例えばACC12は、プログラム102に従って、まずフラグチェック文を実行し、フラグ変数Cにフラグが書き込まれると、書き込まれたフラグに対応する以降の命令文を実行する。
図11は、第1の例に係るプログラムを実行時の処理の流れを示す図である。
まずステップ1101において、プロセッサ11は、プログラム100に従って動作し、外側for文のループに入り、フラグ変数Aにフラグを書き込む(1101)。その後ステップ1102において、フラグ変数Bを確認する(1102)。
一方、ステップ1103において、DTU13は、プログラム101に従って動作し、フラグ変数Aを確認する(1103)。ステップ1101によってフラグ変数Aにフラグが書き込まれると、DTU13はデータの読み込みを開始し、データの読み込みが終了すると、フラグ変数Bにフラグを書き込む(1104)。このとき、フラグ変数Aに書き込まれたフラグを初期状態に戻す(リセットする)。
ステップ1105において、プロセッサ11は、ステップ1104によってフラグ変数Bにフラグが書き込まれると、そのフラグ値が所定の値になっていることを確認し、内側for文のループに入り、フラグ変数Cにフラグを書き込む(1105)。その後、次繰り返しの準備を実行し(1106)、フラグ変数Dを確認する(1107)。
一方、ステップ1108において、ACC12は、プログラム102に従って動作し、フラグ変数Cを確認する(1108)。ステップ1105によってフラグ変数Cにフラグが書き込まれると、ACC12はそのフラグ値が所定の値になっていることを確認し、アクセラレーション処理の実行を開始し、アクセラレーション処理が終了すると、フラグ変数Dにフラグを書き込む(1109)。このとき、フラグ変数Cに書き込まれたフラグを初期状態に戻す。
ステップ1110において、プロセッサ11は、ステップ1109の処理によってフラグ変数Dにフラグが書き込まれると、内側for文の次のループに入り、フラグ変数Cにフラグを書き込む(1110)。このとき、フラグ変数Dに書き込まれたフラグを初期状態に戻す。以降、ステップ1106〜1110の処理を繰り返す。
ステップ1111において、プロセッサ11は、内側for文のループ処理が終了すると、フラグ変数Eにフラグを書き込む(1111)。その後、フラグ変数Fを確認する(1112)。一方、ステップ1113において、DTU13は、プログラム103に従って動作し、フラグ変数Eを確認する(1113)。ステップ1111によってフラグ変数Eにフラグが書き込まれると、データの格納を開始し、データの格納が終了すると、フラグ変数Fにフラグを書き込む(1114)。このとき、フラグ変数Eに書き込まれたフラグを初期状態に戻す。
ステップ1115において、プロセッサ11は、ステップ1114によってフラグ変数Fにフラグが書き込まれると、外側for文の次のループに入り、フラグ変数Aにフラグを書き込む(1115)。このとき、フラグ変数Fに書き込まれたフラグを初期状態に戻す。以降、ステップ1102〜1115の処理を繰り返す。
以上の処理に示すように、プロセッサ11とACC12とDTU13とは、フラグセット及びフラグチェックを介してお互いに同期を取り、且つ、各々自律的に動作する。この第1の例のプログラムによれば、プロセッサ11は、ステップ1109に示すACC12の処理中に、ステップ1106の処理を実行することができる。すなわち、プロセッサ11の処理と、ACC12の処理とをオーバーラップしている。そのため、次繰り返しの準備(ステップ1106の処理)の開始時間を前倒しすることができる。すなわち、プロセッサ11によるACC12の制御のオーバーヘッドを隠蔽することができる。
また、ACC12は、LM15又はDSM14に格納されたプログラム102に従って動作するので、命令セットを拡張する必要がない。すなわち、任意のプロセッサ11に対して、命令セットを拡張することなく任意のACC12を追加することができる。
なお、第1の例のプログラムは、外側for文及び内側for文のループ処理を繰り返すものである。そこで、ループ処理の繰り返し毎に、繰り返し回数に応じたフラグ値を書き込むようプログラムを構成してもよい。例えば内側for文で示すループ処理のn回目の繰り返しでは、同期フラグ変数C、Dに、番号nを付したフラグ値(例えばCn、Dn)を書き込み、確認する。これにより、フラグ値を初期状態に戻すオーバーヘッドを低減することができる。
また、フラグチェック文を実行時には、FVR124に設定された値に応じて、所定の時間が経過するまでの期間は、クロック周波数を低周波数に変化させる又は遮断する等のようにプログラムを構成してもよい。これにより、フラグチェックに係る消費電力を削減することができる。
図12は、第1の例に係るプログラムを実行時の処理の流れの変形例を示す図である。
ここでは、図11に示す処理の流れの変形例として、プロセッサ11が所定の条件を満たす場合(条件分岐やループ回数が一定数に達した場合)に、フラグ変数C’にフラグを書き込み、一方でACC12が、フラグ変数C’に書き込まれたフラグに応じた動作を実行する処理を説明する。なお、このような処理を実行するためのプロセッサ11、ACC12用のプログラムは、後述する並列化コンパイラによって予め生成され、LM15、DSM14等のメモリ上の所定のアドレスに配置される。
ステップ1116において、プロセッサ11は、内側for文のループ処理の実行中に所定の条件を満たす場合(条件分岐やループ回数が一定数に達した場合)、フラグ変数C’にフラグとして条件値を書き込む(1116)。条件値は、前述した様に、特定処理の指示を通知するものである。一方、ACC12は、フラグ変数C’を確認する(1117)。ステップ1115によってフラグ変数C’に条件値が書き込まれると、ACC12は、特別な動作を開始する。特別な動作とは、例えば制御レジスタファイル124を読み取り、読み取られた値が示す次タスクを実行する動作である。
以上の処理に示すように、プロセッサ11とACC12とDTU13とは、フラグセット及びフラグチェックを介してお互いに同期を取り、且つ、各々自律的に動作する。さらに、この変形例に係るプログラムによれば、ACC12がアクセラレーション処理を実行中であっても、プロセッサ11が所定の条件を満たす場合には、ACC12に特別な動作をさせるよう変更することができる。すなわち、ダイナミックなスケジューリングが可能になる。
図13は、本発明の実施形態のマルチコアプロセッサシステム1において実行されるプログラムの第2の例を示す図である。
図13に示すように、第2の例に係るプログラムは、プロセッサ11で実行されるプログラム130、及びDTU13で実行されるプログラム131、133、ACC12で実行されるプログラム132を含む。すなわち、図8に示すプログラム80を、本発明の実施形態のプロセッサコア用に変換した(フラグセット文、フラグチェック文等を追加した)上で、プロセッサ11で実行されるプログラム130と、DTU13で実行されるプログラム131、133、ACC12で実行されるプログラム132とに分割したものである。
なお、各プログラム130、131、132、133は、図10に示す形態と異なるフラグセット文及びフラグチェック文を含む。すなわち、プロセッサ11による内側for文の処理の終了(フラグセット(H))が、ACC12によるアクセラレーション処理の実行開始(フラグチェック(H))を決定する。一方、ACC12によるアクセラレーション処理の終了(フラグセット(G))が、プロセッサ11による内側for文の処理の実行開始(フラグチェック(G))を決定する。
このような各プログラム130、131、132、133は、後述する並列化コンパイラによって予め生成され、LM15、DSM14等のメモリ上の所定のアドレスに配置される。
図14は、第2の例に係るプログラムの実行時の処理の流れを示す図である。
まずステップ1401において、プロセッサ11は、プログラム130に従って動作し、外側for文のループに入り、フラグ変数Aにフラグを書き込む(1401)。その後ステップ1402において、フラグ変数Bを確認する(1402)。
一方、ステップ1403において、DTU13は、プログラム131に従って動作し、フラグ変数Aをチェックする(1403)。ステップ1401によってフラグ変数Aにフラグが書き込まれそれを確認すると、DTU13はデータの読み込みを開始し、データの読み込みが終了すると、フラグ変数Bにフラグを書き込む(1404)。このとき、フラグ変数Aに書き込まれたフラグを初期状態に戻す(リセットする)。
プロセッサ11は、ステップ1404によってフラグ変数Bにフラグが書き込まれると、内側for文のループに入り、フラグ変数Gを確認する(1405)。ここでは、フラグ変数Gには、初期設定としてフラグが書き込まれているものとする。その後、次繰り返しの準備を実行し(1406)、フラグ変数Hにフラグを書き込む(1407)。このとき、フラグ変数Gに書き込まれたフラグを初期状態に戻す。その後、外側for文の次のループに入り、フラグ変数Gを確認する(1408)。以降、ステップ1406〜1408の処理を繰り返す。
一方、ステップ1409において、ACC12は、プログラム132に従って動作し、フラグ変数Bを確認する(1409)。ステップ1404によってフラグ変数Bにフラグが書き込まれると、フラグ変数Hを確認する(1410)。ここでは、フラグ変数Hには、初期設定としてフラグが書き込まれているものとする。その後、アクセラレーション処理の実行を開始し、アクセラレーション処理が終了すると、フラグ変数Gにフラグを書き込む(1411)。このとき、フラグ変数Hに書き込まれたフラグを初期状態に戻す。以降、ステップ1410〜1411の処理を繰り返す。
ステップ1412において、プロセッサ11は、内側for文のループ処理が終了すると、フラグ変数Eにフラグを書き込む(1412)。その後、フラグ変数Fを確認する(1413)。一方、ステップ1414において、DTU13は、プログラム133に従って動作し、フラグ変数Eを確認する(1414)。ステップ1412によってフラグ変数Eにフラグが書き込まれると、データの格納を開始し、データの格納が終了すると、フラグ変数Fにフラグを書き込む(1415)。このとき、フラグ変数Eに書き込まれたフラグを初期状態に戻す。
ステップ1416において、プロセッサ11は、ステップ1415によってフラグ変数Fにフラグが書き込まれると、外側for文の次のループに入り、フラグ変数Aにフラグを書き込む(1416)。このとき、フラグ変数F、Bに書き込まれたフラグを初期状態に戻す。以降、ステップ1402〜1416の処理を繰り返す。
以上の処理に示すように、プロセッサ11とACC12とDTU13とは、フラグセット及びフラグチェックを介してお互いに同期を取り、且つ、各々自律的に動作する。この第2の例のプログラムによれば、プロセッサ11は、ステップ1411に示すACC12の処理中に、ステップ1406の処理を実行することができる。すなわち、プロセッサ11の処理と、ACC12の処理とがオーバーラップしている。
また、ステップ1407の処理によって、ACC12によるステップ1417、1418の処理に先立って、プロセッサ11からACC12の制御のトリガをかけることができる。そのため、プロセッサ11によるフラグチェック・セットの分だけ次繰り返しの準備(ステップ1406)の開始時間を前倒しすることができる。すなわち、プロセッサ11によるACC12の制御のオーバーヘッドを隠蔽することができる。
なお、第2の例のプログラムは、第1の例のプログラムと同様に、外側for文、内側for文のループ処理を繰り返すものである。そこで、ループ処理の繰り返し毎に、繰り返し回数に応じたフラグ値を書き込むようプログラムを構成してもよい。例えば内側for文で示すループ処理のn回目の繰り返しでは、同期フラグ変数Hに、番号nを付したフラグ値(例えばHn)を書き込み、確認する。これにより、フラグ値を初期状態に戻すオーバーヘッドを低減することができる。
また、フラグチェック文を実行時には、FVR124に設定された値に応じて、所定の時間が経過するまでの期間は、クロック周波数を低周波数に変化させる又は遮断する等のようにプログラムを構成してもよい。これにより、フラグチェックに係る消費電力を削減することができる。
図15は、本発明の実施形態のマルチコアプロセッサシステム1において実行されるプログラムの第3の例を示す図である。
図15に示すように、第3の例に係るプログラムは、プロセッサ11で実行されるプログラム150、DTU13で実行されるプログラム151、153、ACC12で実行されるプログラム152、154を含む。すなわち、図8に示すプログラム80を、本発明の実施形態のプロセッサコア用に変換した(フラグセット文、フラグチェック文等を追加した)上で、プロセッサ11で実行されるプログラム150、DTU13で実行されるプログラム151、DTU13で実行されるプログラム153、ACC12で実行されるプログラム152及びACC12で実行されるプログラム154に分割したものである。
また、プロセッサ11用のプログラム150は、内側for文が複数に分けられている点(図15では、外側for文の奇数回転目(2n+1回転目、以下、単に「奇数回転目」という。)、及び偶数回転目(2n回転目、以下、単に「偶数回転目」という。)において、図10に示すプログラム100と異なる。
同様に、DTU13用のプログラムも複数(図15では、プログラム151及び153)に分けられている。プログラム151は、LM15に格納された偶数回転目の計算結果を格納し、且つ、次の偶数回転目の計算用のデータを、LM15に読み込むためのプログラムである。一方、プログラム153は、LM15に格納された奇数回転目の計算結果を格納し、且つ、次の奇数回転目の計算用のデータを、LM15に読み込むためのプログラムである。なお、LM15に計算結果が格納されていない場合には、計算結果の格納を実行しない。
また、ACC12用のプログラムも複数(図15では、プログラム152、154)に分けられている。プログラム152は、奇数回転目のアクセラレーション処理を実行するためのプログラムである。一方、プログラム154は、偶数回転目のアクセラレーション処理を実行するためのプログラムである。
なお、各プログラム150、151、152、153、154は、図10に示す形態と異なるフラグセット文及びフラグチェック文を含む。このような各プログラム150、151、152、153、154は、後述する並列化コンパイラによって予め生成され、LM15、DSM14等のメモリ上の所定のアドレスに配置される。
図16は、第3の例に係るプログラムの実行時の処理の流れを示す図である。
まずステップ1601において、プロセッサ11は、プログラム150に従って動作し、外側for文のループに入り、フラグ変数A1へのフラグの書き込み、フラグ変数B0の確認を実行する(1601)。
その後ステップ1602において、プロセッサ11は、外側for文の奇数回転目(説明の便宜上、1回転目とする。)のループに入り、フラグ変数G0の確認、次繰り返しの準備、及びフラグ変数H0へのフラグの書き込みを繰り返す(1602)。このステップ1602の処理は、図14のステップ1405〜1407の処理の繰り返しと同一なので、ここでは説明を省略する。なお、フラグ変数B0に書き込まれたフラグを初期状態に戻す(リセットする)。
一方、ステップ1603において、DTU13は、プログラム151に従って動作し、フラグ変数A1の確認、データの格納、データの読み込み、及びフラグ変数B1へのフラグの書き込みを実行する(1603)。このステップ1603の処理では、格納すべきデータが存在しないので、DTU13は、次の偶数回転目である2回転目のアクセラレーション処理(ステップ1608)用のデータを、LM15に読み込む。
一方、ステップ1604において、ACC12は、プログラム152に従って動作し、フラグ変数B0の確認、フラグ変数H0の確認、及び1回転目のアクセラレーション処理を実行する(1604)。このとき、フラグ変数B0、H0に書き込まれたフラグを初期状態に戻す。
以上のステップ1601〜1604の処理に示すように、プロセッサ11とACC12とDTU13とは、フラグセット及びフラグチェックを介してお互いに同期を取り、且つ、各々自律的に動作する。特に、ACC12が1回転目のアクセラレーション処理を実行中に、DTU13は前回のアクセラレーション処理(ここでは存在しない)の計算結果のデータを格納するとともに、2回転目のアクセラレーション処理に用いるデータを読み込むことができる。すなわち、プロセッサ11の処理と、ACC12の処理と、DTU13の処理とをオーバーラップさせることができる。
その後ステップ1605において、プロセッサ11は、フラグ変数A0へのフラグの書き込み、フラグ変数B1の確認を実行する(1605)。
その後ステップ1606において、プロセッサ11は、外側for文の2回転目のループに入り、フラグ変数G1の確認、次繰り返しの準備、及びフラグ変数H1へのフラグの書き込みを繰り返す(1606)。このステップ1606の処理も、図14のステップ1405〜1407の処理の繰り返しと同一なので、ここでは説明を省略する。なお、フラグ変数B1に書き込まれたフラグを初期状態に戻す。以降、プロセッサ11は、ステップ1601、1602、1605及び1606の処理を繰り返す。
一方、ステップ1607において、DTU13は、プログラム153に従って動作し、フラグ変数A0の確認、データの格納、データの読み込み、及びフラグ変数B0へのフラグの書き込みを実行する(1607)。このステップ1606の処理では、ステップ1604で示す1回転目のアクセラレーション処理の計算結果を、LM15に格納し、且つ、次の奇数回転目である3回転目のアクセラレーション処理用のデータを、LM15に読み込む。以降、DTU13は、ステップ1603及び1607の処理を繰り返す。
また、ステップ1608において、ACC12は、プログラム154に従って動作し、フラグ変数B1の確認、フラグ変数H1の確認、及び2回転目のアクセラレーション処理を実行する(1608)。このステップ1608の処理では、ステップ1603によって読み込まれた2回転目のアクセラレーション処理用のデータに対するアクセラレーション処理を実行する。このとき、フラグ変数B1、H1に書き込まれたフラグを初期状態に戻す。以降、ACC12は、ステップ1604及び1608の処理を繰り返す。
以上のステップ1605〜1608の処理に示すように、プロセッサ11とACC12とDTU13とは、フラグセット及びフラグチェックを介してお互いに同期を取り、且つ、各々自律的に動作する。特に、ACC12が2回転目のアクセラレーション処理を実行中に、DTU13は1回転目のアクセラレーション処理の計算結果のデータを格納するとともに、3回転目のアクセラレーション処理に用いるデータを読み込むことができる。すなわち、プロセッサ11の処理と、ACC12の処理と、DTU13の処理とをオーバーラップさせることができる。
以上の処理に示すように、プロセッサ11とACC12とDTU13とは、フラグセット及びフラグチェックを介してお互いに同期を取り、且つ、各々自律的に動作する。この第3の例のプログラムによれば、ACC12がアクセラレーション処理(例えば奇数回転目の処理)を実行中に、DTU13は前回のアクセラレーション処理(偶数回転目の処理)の計算結果のデータを格納するとともに、次回のアクセラレーション処理(偶数回転目の処理)に用いるデータを読み込むことができる。
また、ACC12の処理用のデータ領域と、DTU13のデータストア用のデータ領域と、DTU13のデータロード用のデータ領域とを分け(トリプルバッファリング)、且つ、プロセッサ11の処理と、ACC12の処理と、DTU13の処理とをオーバーラップさせることによって、データ転送のオーバーヘッドを隠蔽し、処理を高速化することができる。また、前述の第2の例のプログラムと比べた場合、このデータ転送のオーバーヘッドの分だけさらに計算時間を短縮することができる。
なお、第3の例のプログラムは、第1の例及び第2の例のプログラムと同様に、外側for文、内側for文のループ処理を繰り返すものである。そこで、ループ処理の繰り返し毎に、繰り返し回数に応じたフラグ値を書き込むようプログラムを構成してもよい。例えば内側for文で示すループ処理のn回目の繰り返しでは、フラグ変数H0、H1に、番号nを付したフラグ値(例えばH0n、H1n)を書き込み、確認する。これにより、フラグ値を初期状態に戻すオーバーヘッドを低減することができる。
また、フラグチェック文を実行時には、FVR124に設定された値に応じて、所定の時間が経過するまでの期間は、クロック周波数を低周波数に変化させる又は遮断する等のようにプログラムを構成してもよい。これにより、フラグチェックに係る消費電力を削減することができる。
図17は、本発明の実施形態のマルチコアプロセッサシステム1において実行されるプログラムの第4の例の実行時の処理の流れを示す図である。
第4の例に係るプログラムは、プロセッサ11で実行されるプログラム1701〜1703、DTU13で実行されるプログラム1704〜1710及びACC12で実行されるプログラム1711〜1725を含む。
なお、プログラム1701〜1703は、マルチコアプロセッサシステム1で実行されるプログラムによる一連の処理を、LM15等のメモリサイズを考慮して複数のループ処理に分割した場合において、各ループ処理に対応するプロセッサ11用のプログラムである。同様に、プログラム1704〜1710、プログラム1711〜1725は、それぞれ上記の場合におけるDTU13用のプログラム、ACC12用のプログラムである。
これらプログラム1701〜1725は、後述する並列化コンパイラによって予め生成され、LM15、DSM14等のメモリ上の所定のアドレスに配置される。
なお、プログラム1701は、プログラム1704の処理と連係するためのフラグを書き込むプログラム、プログラム1712の処理と連係するためのフラグを書き込むプログラム、及びプロセッサ11がLM15、DSM14等からデータを読み込んで演算処理を行うプログラム(すなわちACC12等と並列動作を行うことが可能なプロセッサ11のプログラム)を含む。同様に、プログラム1702及び1703は、DTU13又はACC12による処理と連係するためのフラグを書き込むプログラムを含む。
プログラム1704は、プログラム1716においてACC12がアクセラレーション処理で用いるデータを、前もってDTU13が、LM15又はDSM14に読み込む(プレロードする)プログラムである。このプログラム1704は、後述する並列化コンパイラによって最適化されたサイズのデータを、LM15又はDSM14にプレロードする。このプログラム1704は、プログラム1715の処理と連係するためのフラグを書き込むプログラムを含む。
プログラム1705は、プログラム1702の処理で書き込まれたフラグを確認するプログラムである。
プログラム1706は、プログラム1722においてACC12がアクセラレーション処理で用いるデータを、前もってDTU13が、LM15又はDSM14にプレロードするプログラムである。このプログラム1706は、プログラム1704と同様に、後述する並列化コンパイラによって最適化されたサイズのデータを、LM15又はDSM14にプレロードする。このプログラム1706は、プログラム1721の処理と連係するためのフラグを書き込むプログラムを含む。
プログラム1707は、プログラム1713においてACC12がLM15又はDSM14等のメモリに格納したデータを、オンチップ集中共有メモリ40又はオフチップ集中共有メモリ50に格納(ポストストア)するプログラムである。このプログラム1707は、プログラム1713で書き込まれたフラグを確認するプログラムを含む。プログラム1708〜1710は、プログラム1705〜1707と同一なので、ここでは説明を省略する。
プログラム1711は、プログラム1701の処理で書き込まれたフラグを確認するプログラムである。プログラム1712は、ACC12が、プロセッサ11と連係して、定常的に繰り返しアクセラレーション処理を実行するプログラムである。なお、説明の便宜上、ここでアクセラレーション処理を実行する際に用いられるデータは、既にプレロードされているものとする。プログラム1713は、プログラム1712によるアクセラレーション処理の計算結果のデータを、LM15又はDSM14等のメモリに格納するプログラムである。
プログラム1714は、プログラム1704の処理で書き込まれたフラグを確認するプログラムである。プログラム1715は、プログラム1704の処理においてDTU13によってLM15又はDSM14にプレロードされたデータを、ACCレジスタ122に読み込むプログラムである。プログラム1716は、ACC12が、ACCレジスタ122に読み込まれたデータに対して、アクセラレーション処理を実行するプログラムである。
プログラム1717〜1725は、プログラム1711〜1716と同一なので、ここでは説明を省略する。
以上の処理に示すように、プロセッサ11とACC12とDTU13とは、フラグセット及びフラグチェックを介してお互いに同期を取り、且つ、各々自律的に動作する。この第4の例のプログラムによれば、ACC12の処理を、DTU13と連係(チェイニング)して処理を実行する部分(例えばプログラム1716)と、プロセッサ11と連係して繰り返し処理を実行する部分(例えばプログラム1718)とに分けた上で、処理を実行することができる。そのため、例えばDTU13との間での連係処理では、プロセッサ11を介さずにアクセラレーション処理を実行するので、プロセッサ11による制御のオーバーヘッドを隠蔽することができる。
また、プレロード処理によって、DTU13は、ACC12がアクセラレーション処理を実行中に、予め並列化コンパイラによって最適に分割されたサイズのACC12の次回の処理用のデータを、LM15等に読み込んでいる。そのため、ACC12に連続してデータを供給することができる。一方、ポストストア処理によって、DTU13は、ACC12のアクセラレーション処理を実行中に、ACC12のアクセラレーション処理の計算結果のデータを、LM15等から格納することができる。
図18は、本発明の実施形態のマルチコアプロセッサシステム1において実行されるプログラムの第5の例の実行時の処理の流れを示す図である。ここでは、複数の異なるプロセッサコア10−1、10−2上のDTU13−1、ACC12−1、DTU13−2が、フラグセット・チェックを介して連係する動作を説明する。
第5の例に係るプログラムは、プロセッサコア10−1のプロセッサ11−1で実行されるプログラム1801、1802、DTU13−1で実行されるプログラム1803、1804、ACC12−1で実行されるプログラム1805、1806を含む。また、プロセッサコア10−2のプロセッサ11−2で実行されるプログラム1811、DTU13−2で実行されるプログラム1812、1813を含む。
プロセッサコア10−1用のプログラム1801〜1806は、後述する並列化コンパイラによって予め生成され、プロセッサコア10−1のLM15、DSM14等のメモリ上の所定のアドレスに配置される。一方、プロセッサコア10−2用のプログラム1807〜1809は、プロセッサコア10−2のLM15、DSM14等のメモリ上の所定のアドレスに配置される。
なお、プログラム1801は、プロセッサ11−1がタスク1を実行するプログラムである。このプログラム1801は、タスク1を実行時に、DTU13−1によるプログラム1803の処理と連係するためのフラグを、プロセッサコア10−1のLM15等に書き込むプログラムを含む。プログラム1802は、プロセッサ11−1がタスク2を実行するプログラムである。
プログラム1803は、プロセッサ11−1によるプログラム1801の処理で書き込まれたフラグを確認するプログラムである。プログラム1804は、DTU13−1が、LM15又はDSM14に格納されたプロセッサ11−1の計算結果のデータを、オフチップ集中共有メモリ50に格納するプログラムである。このプログラム1804は、DTU13−2によるプログラム1812の処理と連係するためのフラグを、プロセッサコア10−2のDSM14に書き込むプログラムを含む。
プログラム1805は、ACC12−1が、DTU13−2によるプログラム1812の処理で書き込まれたフラグを確認するプログラムである。プログラム1806は、ACC12−1が、DTU13−2によるプログラム1813によって転送されたデータに対して、アクセラレーション処理を実行するプログラムである。
プログラム1811は、プロセッサ11−2がタスク3を実行するプログラムである。プログラム1812は、DTU13−2が、DTU13−1によるプログラム1804の処理で書き込まれたフラグを確認するプログラムである。プログラム1813は、DTU13−2が、LM15又はDSM14に格納されたプロセッサ11−2の計算結果のデータを、プロセッサコア10−1のDSM14に格納するプログラムである。このプログラム1813は、ACC12−1によるプログラム1805の処理と連係するためのフラグを、プロセッサコア10−1のDSM14に書き込むプログラムを含む。
以上の処理に示すように、複数の異なるプロセッサコア10−1、10−2上のプロセッサ11とACC12とDTU13とは、フラグセット及びフラグチェックを介してお互いに同期を取り、且つ、各々自律的に動作することができる。
本発明に関するこれまでの説明からわかるように、プロセッサコア10−1、10−2のように2つのプロセッサコア間のみならず、全てのプロセッサコア10−1〜10−n(におけるプロセッサ11、ACC12、DTU13)が、逐次処理プログラムから並列化コンパイラにより生成された各プロセッサコア用のプログラムを並行的に実行する場合にその処理の同期化を自律的に行うことを可能とする。そしてそのことによって、ACC12を追加しても新たに命令セットを拡張する必要もなく、しかも同期化に伴うプロセッサ11、ACC12、DTU13の関与、つまりオーバーヘッドを大幅に減らすことにより、効率的な演算処理を実行することができる。
図19は、本発明の実施形態の並列化コンパイラが実行する処理のフローチャートである。ここでは、本発明の実施形態のACCを含むプロセッサシステム上で実行処理される並列化プログラムを逐次処理プログラムから生成される並列化コンパイラが計算機上で実行する処理を説明する。コンパイラとは、一般的にはコンパイル対象のソースプログラムを、いわゆる計算機が実行可能なプログラム(機械語のプログラム等)に変換するソフトウェアであるが、本発明で述べる並列化コンパイラは前述のように逐次処理プログラムのソースコードから並列化プログラムを生成するコンパイラを意味する。
まず、並列化コンパイラは、ソースプログラムの字句を解析し、プログラムの構文を解析する(1901)。なお、本実施形態では、コンパイラがプログラムを解析しているが、プログラマ(人)がプログラムを解析してもよい。また、プログラムの作成時に、本実施形態で必要なプログラムの情報を作成してもよい。
次に、並列化コンパイラは、構文の解析結果に基づいて、階層的なタスク、すなわち、プログラムの階層的マクロタスクによる表現を生成する(1902)。ここでは、プロセッサ11用のタスク、ACC12用のタスク等からなる粗粒度タスク(マクロタスク)を生成する。なお、生成されたマクロタスクがループイタレーションレベルの並列処理や逐次処理が可能な場合、LM15等のメモリサイズを考慮して、異なる複数のマクロタスクに分割する(ループ整合分割)。
その後、生成されたタスク間の依存関係(制御フロー)を解析し(1903)、タスク間のデータ依存を解析し(1904)、各タスクによってアクセスされるデータの範囲を解析する(1905)。
その後、プログラムの解析結果を使用して、プログラムが最も早く実行できる条件を解析し(1906)、最早実行条件の解析結果を使用して、並列処理区間やタスクが割り当てられるプロセッサ数を決定し、マクロタスクグラフを生成する。
その後、各タスクの実行順序を決定するタスクスケジューリングを実行する(1907)。ここで実行されるタスクスケジューリングは、メモリ管理・タスクスケジューリング、データ転送スケジューリング、及び低消費電力スケジューリングを実行する。
メモリ管理・タスクスケジューリングとは、各プロセッサコア10−1〜10−nのLM15を介した効率的なデータの授受を実行するためのスケジューリングである。
データ転送スケジューリングとは、図17の例に示すプレロードやポストストアのように、各プロセッサコア10−1〜10−nにおけるデータ転送、及びマルチコアプロセッサシステム1全体におけるデータ転送の最適化を実現するためのスケジューリングである。
低消費電力スケジューリングとは、プロセッサ11、ACC12、DTU13が待ち状態になる場合に、待ち時間に応じてクロック周波数を低周波数に変化させたり、電源を遮断させたりする電力制御を実現するためのスケジューリングである。
その後、ステップ1907によって実行されたタスクスケジューリングに基づいて、マルチコアプロセッサシステム1において実行可能な並列プログラムを生成する(1908)。この並列プログラムはプロセッサ11用のタスク、ACC12用のタスク、DTU13用のタスクの命令文を含む。ここで生成される並列プログラムでは、互いに依存のあるプロセッサ11用のタスク、ACC12用のタスク、及びDTU13用のタスクの命令文には、フラグセット文、フラグチェック文が挿入される。これらACC12用のタスク、DTU13用のタスクの命令文、及びフラグ領域はDSM14、LM15、オンチップ集中共有メモリ40、オフチップ集中共有メモリのうちの少なくともいずれか一以上のメモリに配置される。
なお、フラグの値に特定の動作を関連付け、フラグチェック後の動作を指定することもできる。例えば、ACC12用のフラグチェック文を、チェックしたフラグの値が特定の値である場合、制御レジスタファイル124の値を確認し、プロセッサ11によって指定される命令列(タスク)を実行するように構成する。
以上に示すように、並列化コンパイラは、各プロセッサ11、ACC12、DTU13用に別々のプログラムを生成する。その後、並列化コンパイラは、生成されたプログラムを、各プロセッサコア10−1〜10−nのLM15、DSM14、オンチップ集中共有メモリ40、オフチップ集中共有メモリ50上の所定のアドレスに格納する。
以上、本発明の実施形態について説明したが、上記実施形態は本発明の適用例の一つを示したものであり、本発明の技術的範囲を上記実施形態の具体的構成に限定する趣旨ではない。本発明の要旨を逸脱しない範囲において種々変更可能である。
例えば、本発明の実施形態では、プロセッサ11と、ACC12と、DTU13とがフラグセット・チェックを介して互いに同期する動作について説明してきたが、この場合に限らない。各装置は、フラグセット・チェック以外の方法、すなわち自装置の処理の完了を示す通知を発行及び確認することによって、互いに同期してもよい。
以上をまとめると、本発明は、複数の構成要素を備えるプロセッサコアにおいて、各構成要素の制御オーバーヘッドを低減可能にするプロセッサコアを提供することを目的として、次のような構成を有する。
すなわち、本発明の一実施態様は、処理を実行する複数の構成要素(例えば、プロセッサ11、ACC12及びDTU13)と、メモリと、前記複数の構成要素及び前記メモリを接続する結合網とを有するプロセッサコアであって、前記メモリは、前記複数の構成要素がそれぞれ実行するタスクを予め記憶する命令領域と、前記複数の構成要素間で各々の動作を同期させるためのフラグを記憶する同期フラグ領域と、前記複数の構成要素のそれぞれが処理に用いるデータ及び処理後のデータが格納されるデータ領域とを有し、前記複数の構成要素は、それぞれ、前記プロセッサコアの起動時に、前記命令領域に記憶された前記それぞれの構成要素に対応したタスク中の命令を読み込み、当該読み込んだ命令に従って動作し、前記複数の構成要素のうちの第1構成要素は、所定の処理を完了するときに、当該所定の処理後のデータを前記データ領域に格納し、さらに当該所定の処理の完了を示すフラグを前記同期フラグ領域に書き込み、前記複数の構成要素のうちの前記第1構成要素とは異なる第2構成要素は、前記同期フラグ領域に当該フラグが書き込まれたことを確認したことに応じて、前記第2構成要素が前記データ領域に格納された前記処理後のデータを読み込み、前記第2構成要素が読み込んだ命令の実行を開始し、当該命令の実行完了後に、当該命令の実行後のデータを前記データ領域に格納し、さらに当該命令の完了を示すフラグを前記同期フラグ領域に書き込むとの構成を有する。
この本発明により、複数の構成要素が互いの同期制御に時間を費やすことなく、それぞれ自律的に動作することができるので、各構成要素の制御オーバーヘッドを低減可能にすることができるとの作用効果を奏する。
上述した本発明のより具体的な態様は、ACCを新たにプロセッサに接続する際にプロセッサに対して命令セットを拡張することなく、かつACCに十分なデータ供給能力を確保し、さらにACCの制御オーバーヘッドを低減可能にするACC及びACCを含むプロセッサコアを内外に有するマルチコアプロセッサシステムを提供することを目的としてもよい。
このようなマルチコアプロセッサシステムの一例は、上述した例のように、演算処理を行うプロセッサと、メモリと、前記プロセッサ及び前記メモリに結合網を介して接続されたアクセラレータ(ACC)とを有するプロセッサコアを半導体チップ上に備えたプロセッサシステムであって、前記メモリは、前記プロセッサ及び前記アクセラレータが実行するタスクを予め記憶する命令領域と、前記プロセッサと前記アクセラレータとの間で各々の動作を同期させるためのフラグを記憶する同期フラグ領域と、前記プロセッサ及び前記アクセラレータが処理に用いるデータ及び処理後のデータが格納されるデータ領域とを有し、前記アクセラレータは、前記命令領域に記憶されたタスクに従って動作し、前記プロセッサによる所定の処理の完了を示すフラグが前記同期フラグ領域に書き込まれたことを確認すると、前記プロセッサが他の処理を実行中であっても、前記データ領域に書き込まれたデータを読み込んで当該フラグに対応するタスクを実行することによってアクセラレーション処理を開始し、前記アクセラレーション処理の完了後に、前記アクセラレーション処理後のデータを前記データ領域に格納し、さらに当該アクセラレーション処理の完了を示すフラグを前記同期フラグ領域に書き込み、前記プロセッサは、前記アクセラレーション処理の完了を示すフラグが前記同期フラグ領域に書き込まれたことを確認すると、前記アクセラレータが他の処理を実行中であっても、当該フラグに対応するタスクを開始するように構成されてもよい。
このようなマルチコアプロセッサシステムによれば、プロセッサ及びACCが互いの同期制御に時間を費やすことなく、それぞれ自律的に動作することができるので、ACCを新たに接続する際にプロセッサに対して命令セットを拡張することなく、かつACCに十分なデータ供給能力を確保し、さらにACCの制御オーバーヘッドを低減可能にすることができる。

Claims (8)

  1. 処理を実行する複数の構成要素と、メモリと、前記複数の構成要素及び前記メモリを接続する結合網とを有するプロセッサコアであって、
    前記メモリは、前記複数の構成要素がそれぞれ実行するタスクを予め記憶する命令領域と、前記複数の構成要素間で各々の動作を同期させるためのフラグを記憶する同期フラグ領域と、前記複数の構成要素のそれぞれが処理に用いるデータ及び処理後のデータが格納されるデータ領域とを有し、
    前記複数の構成要素は、それぞれ、前記プロセッサコアの起動時に、前記命令領域に記憶された前記それぞれの構成要素に対応したタスク中の命令を読み込み、当該読み込んだ命令に従って動作し、
    前記複数の構成要素のうちの第1構成要素は、所定の処理を完了するときに、当該所定の処理後のデータを前記データ領域に格納し、さらに当該所定の処理の完了を示すフラグを前記同期フラグ領域に書き込み、
    前記複数の構成要素のうちの前記第1構成要素とは異なる第2構成要素は、前記同期フラグ領域に当該フラグが書き込まれたことを確認したことに応じて、前記第2構成要素が前記データ領域に格納された前記処理後のデータを読み込み、前記第2構成要素が読み込んだ命令の実行を開始し、当該命令の実行完了後に、当該命令の実行後のデータを前記データ領域に格納し、さらに当該命令の完了を示すフラグを前記同期フラグ領域に書き込むことを特徴とするプロセッサコア。
  2. 請求項1記載のプロセッサコアであって、
    前記複数の構成要素のそれぞれが実行する命令は、プログラムの解析によって得られる情報に基づいて前記プログラムから生成された命令であって、前記生成された命令は前記フラグと対応付けられていることを特徴とするプロセッサコア。
  3. 請求項1又は2記載のプロセッサコアであって、
    前記複数の構成要素には、プロセッサ、アクセラレータ及びデータ転送のうちの少なくとも2つが含まれることを特徴とするプロセッサコア。
  4. 請求項1〜3のうちいずれか1項記載のプロセッサコアであって、
    前記複数の構成要素には、アクセラレータが含まれ、
    前記アクセラレータは、アクセラレーション処理を実行する処理部と、前記処理部によって処理されるデータを一時的に格納する内部記憶領域と、前記同期フラグ領域にフラグを書き込む及び前記同期フラグ領域にフラグが書き込まれたことを確認するロード・ストアユニット側フラグ書込・確認器とを有することを特徴とするプロセッサコア。
  5. 請求項1〜4のうちいずれか1項記載のプロセッサコアであって、
    前記複数の構成要素には、アクセラレータが含まれ、
    前記アクセラレータは、アクセラレーション処理を実行する処理部と、前記処理部によって処理されるデータを一時的に格納する内部記憶領域と、前記内部記憶領域と前記メモリとの間でデータ転送を実行するロード・ストアユニットと、前記処理部と前記ロード・ストアユニットとの動作を同期させるためのフラグを記憶するフラグ授受レジスタとを備え、
    前記処理部は、当該処理部による処理の実行状況に応じて、前記同期フラグ領域又は前記フラグ授受レジスタにフラグを書き込む、及び、前記同期フラグ領域又は前記フラグ授受レジスタにフラグが書き込まれたことを確認する処理部側フラグ書込・確認器を有し、
    前記ロード・ストアユニットは、当該ロード・ストアユニットによる処理の実行状況に応じて、前記同期フラグ領域又は前記フラグ授受レジスタにフラグを書き込む、及び、前記同期フラグ領域又は前記フラグ授受レジスタにフラグが書き込まれたことを確認するロード・ストアユニット側フラグ書込・確認器を有することを特徴とするプロセッサコア。
  6. 請求項1〜5のうちいずれか1項記載のプロセッサコアであって、
    前記複数の構成要素には、アクセラレータ及びデータ転送ユニットが含まれ、
    前記メモリは、さらに、前記アクセラレータ内に設けられたメモリ及びレジスタの少なくとも一方を含み、
    前記データ転送ユニットは、
    前記アクセラレータによるアクセラレーション処理の完了を示すフラグが前記同期フラグ領域に書き込まれたことを確認すると、前記アクセラレーション処理の計算結果のデータを、前記アクセラレータから前記メモリに格納し、
    前記アクセラレータによる次回のアクセラレーション処理で用いられるデータを、前記メモリから前記アクセラレータに前もって読み込むロード処理を実行し、
    前記ロード処理の完了を示すフラグを前記同期フラグ領域に書き込むことを特徴とするプロセッサコア。
  7. 請求項1〜6のうちいずれか1項記載のプロセッサコアを複数備えることを特徴とするプロセッサシステム。
  8. 請求項7記載のプロセッサシステムであって、
    前記プロセッサシステムは、半導体チップ上に形成され、
    前記プロセッサシステムは、複数の前記プロセッサコアによって共有される前記半導体チップ上のオンチップ集中共有メモリ、及び、複数の前記プロセッサコアによって共有される前記半導体チップ外部のオフチップ集中共有メモリのうち少なくとも一方を備えることを特徴とするプロセッサシステム。
JP2017032018A 2011-11-04 2017-02-23 プロセッサコア及びプロセッサシステム Active JP6525286B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2011242824 2011-11-04
JP2011242824 2011-11-04

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2013541786A Division JP6103647B2 (ja) 2011-11-04 2012-10-30 プロセッサシステム及びアクセラレータ

Publications (2)

Publication Number Publication Date
JP2017091589A true JP2017091589A (ja) 2017-05-25
JP6525286B2 JP6525286B2 (ja) 2019-06-05

Family

ID=48192033

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013541786A Active JP6103647B2 (ja) 2011-11-04 2012-10-30 プロセッサシステム及びアクセラレータ
JP2017032018A Active JP6525286B2 (ja) 2011-11-04 2017-02-23 プロセッサコア及びプロセッサシステム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2013541786A Active JP6103647B2 (ja) 2011-11-04 2012-10-30 プロセッサシステム及びアクセラレータ

Country Status (6)

Country Link
US (2) US9846673B2 (ja)
JP (2) JP6103647B2 (ja)
CN (1) CN104025045B (ja)
GB (1) GB2511672B (ja)
TW (1) TWI597661B (ja)
WO (1) WO2013065687A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11256537B2 (en) 2018-07-30 2022-02-22 Mitsubishi Electric Corporation Interrupt control apparatus, interrupt control method, and computer readable medium

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015014833A (ja) * 2013-07-03 2015-01-22 スパンション エルエルシー 再構築可能なlsi
US9880935B2 (en) * 2014-03-24 2018-01-30 Intel Corporation Efficient data transfer between a processor core and an accelerator
US11132203B2 (en) * 2014-08-14 2021-09-28 Texas Instruments Incorporated System and method for synchronizing instruction execution between a central processor and a coprocessor
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
EP3208712B1 (en) * 2016-02-22 2020-02-19 Karlsruher Institut für Technologie Computer system and method for parallel program code optimization and deployment
US10310897B2 (en) * 2016-09-30 2019-06-04 Intel Corporation Hardware accelerators and methods for offload operations
US10671361B2 (en) * 2016-10-25 2020-06-02 Paypal, Inc. Automatically determining data dependencies to facilitate code execution
BR112019010679A2 (pt) * 2016-12-31 2019-09-17 Intel Corp sistemas, métodos e aparelhos para computação heterogênea
KR102424962B1 (ko) * 2017-11-15 2022-07-25 삼성전자주식회사 병렬 연산 처리를 수행하는 메모리 장치 및 이를 포함하는 메모리 모듈
GB2575289B (en) 2018-07-04 2020-09-16 Graphcore Ltd Streaming engine
US11515291B2 (en) 2018-08-28 2022-11-29 Adeia Semiconductor Inc. Integrated voltage regulator and passive components
US11397612B2 (en) * 2019-07-27 2022-07-26 Analog Devices International Unlimited Company Autonomous job queueing system for hardware accelerators
US11144290B2 (en) * 2019-09-13 2021-10-12 Huawei Technologies Co., Ltd. Method and apparatus for enabling autonomous acceleration of dataflow AI applications
CN114514569B (zh) * 2019-10-10 2024-03-01 日本电信电话株式会社 秘密多重迭代计算装置、方法以及记录介质
KR20210094178A (ko) * 2020-01-20 2021-07-29 삼성전자주식회사 직렬로 연결된 전자 장치들 사이에서 컴플리션을 조기에 전송하기 위한 컴퓨팅 시스템
US11176043B2 (en) * 2020-04-02 2021-11-16 International Business Machines Corporation Distributed memory-augmented neural network architecture

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61134863A (ja) * 1984-12-04 1986-06-21 Mitsubishi Electric Corp デ−タ処理装置
JPS63240664A (ja) * 1987-03-27 1988-10-06 Masahiro Sowa 高速処理計算機
JPH1091603A (ja) * 1996-09-12 1998-04-10 Fujitsu Ltd デュアルcpuシステムにおける立ち上げ同期確立方法及び異常監視方法
JP2002530736A (ja) * 1998-11-16 2002-09-17 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) 多重処理システムにおける改良結果処理方法
JP2006139766A (ja) * 2004-10-12 2006-06-01 Nec Electronics Corp 情報処理装置
JP2006293768A (ja) * 2005-04-12 2006-10-26 Univ Waseda マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP2007317152A (ja) * 2006-05-29 2007-12-06 Yuundo:Kk 情報処理装置
JP2009528584A (ja) * 2006-01-26 2009-08-06 エクセジー・インコーポレイテツド Fpgaベースのパイプライン処理のためのファームウェアソケットモジュール
JP2010003151A (ja) * 2008-06-20 2010-01-07 Renesas Technology Corp データ処理装置
EP2278452A1 (en) * 2009-07-15 2011-01-26 Nxp B.V. Coprocessor programming

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044206A (en) * 1997-10-14 2000-03-28 C-Cube Microsystems Out of order instruction processing using dual memory banks
US6832305B2 (en) * 2001-03-14 2004-12-14 Samsung Electronics Co., Ltd. Method and apparatus for executing coprocessor instructions
JP4062441B2 (ja) * 2003-07-18 2008-03-19 日本電気株式会社 並列処理システム及び並列処理プログラム
JP4276028B2 (ja) * 2003-08-25 2009-06-10 株式会社日立製作所 マルチプロセッサシステムの同期方法
US7590823B1 (en) * 2004-08-06 2009-09-15 Xilinx, Inc. Method and system for handling an instruction not supported in a coprocessor formed using configurable logic
EP1647894A3 (en) 2004-10-12 2007-11-21 NEC Electronics Corporation Information processing apparatus with parallel DMA processes
JP4784827B2 (ja) 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
JP4936517B2 (ja) 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP5137171B2 (ja) * 2006-07-24 2013-02-06 ルネサスエレクトロニクス株式会社 データ処理装置
JP4476267B2 (ja) 2006-10-06 2010-06-09 株式会社日立製作所 プロセッサ及びデータ転送ユニット
JP2009176116A (ja) * 2008-01-25 2009-08-06 Univ Waseda マルチプロセッサシステムおよびマルチプロセッサシステムの同期方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61134863A (ja) * 1984-12-04 1986-06-21 Mitsubishi Electric Corp デ−タ処理装置
JPS63240664A (ja) * 1987-03-27 1988-10-06 Masahiro Sowa 高速処理計算機
JPH1091603A (ja) * 1996-09-12 1998-04-10 Fujitsu Ltd デュアルcpuシステムにおける立ち上げ同期確立方法及び異常監視方法
JP2002530736A (ja) * 1998-11-16 2002-09-17 テレフオンアクチーボラゲツト エル エム エリクソン(パブル) 多重処理システムにおける改良結果処理方法
JP2006139766A (ja) * 2004-10-12 2006-06-01 Nec Electronics Corp 情報処理装置
JP2006293768A (ja) * 2005-04-12 2006-10-26 Univ Waseda マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP2009528584A (ja) * 2006-01-26 2009-08-06 エクセジー・インコーポレイテツド Fpgaベースのパイプライン処理のためのファームウェアソケットモジュール
JP2007317152A (ja) * 2006-05-29 2007-12-06 Yuundo:Kk 情報処理装置
JP2010003151A (ja) * 2008-06-20 2010-01-07 Renesas Technology Corp データ処理装置
EP2278452A1 (en) * 2009-07-15 2011-01-26 Nxp B.V. Coprocessor programming

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JAMES E. SMITH: ""Decoupled access/execute computer architectures"", [ONLINE], JPN6012068672, 1982, US, pages 231 - 238, ISSN: 0003698284 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11256537B2 (en) 2018-07-30 2022-02-22 Mitsubishi Electric Corporation Interrupt control apparatus, interrupt control method, and computer readable medium

Also Published As

Publication number Publication date
GB2511672B (en) 2020-04-15
CN104025045B (zh) 2017-07-04
TWI597661B (zh) 2017-09-01
US20140304491A1 (en) 2014-10-09
WO2013065687A1 (ja) 2013-05-10
JP6103647B2 (ja) 2017-04-05
JP6525286B2 (ja) 2019-06-05
US9846673B2 (en) 2017-12-19
GB201409767D0 (en) 2014-07-16
GB2511672A (en) 2014-09-10
US10095657B2 (en) 2018-10-09
JPWO2013065687A1 (ja) 2015-04-02
TW201333814A (zh) 2013-08-16
CN104025045A (zh) 2014-09-03
US20180060275A1 (en) 2018-03-01

Similar Documents

Publication Publication Date Title
JP6103647B2 (ja) プロセッサシステム及びアクセラレータ
JP4936517B2 (ja) ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
EP3314401B1 (en) Block-based architecture with parallel execution of successive blocks
JP5270529B2 (ja) 再構成可能なマルチ処理粗粒アレイ
CN100456230C (zh) 超长指令字与单指令流多数据流融合的计算群单元
CN103714039B (zh) 通用计算数字信号处理器
Vishkin Using simple abstraction to reinvent computing for parallelism
US9424099B2 (en) Method and system for synchronization of workitems with divergent control flow
CN103279445A (zh) 运算任务的计算方法及超算系统
Baudisch et al. Multithreaded code from synchronous programs: Extracting independent threads for OpenMP
JP2014216021A (ja) バッチスレッド処理のためのプロセッサ、コード生成装置及びバッチスレッド処理方法
Lisper Towards parallel programming models for predictability
US9665354B2 (en) Apparatus and method for translating multithread program code
JP5885481B2 (ja) 情報処理装置、情報処理方法、及びプログラム
Owaida et al. Massively parallel programming models used as hardware description languages: The OpenCL case
Baker et al. Hybrid programming using OpenSHMEM and OpenACC
CN104615496B (zh) 基于多层次异构结构的可重构架构的并行扩展方法
US20220019487A1 (en) Communication Between Host and Accelerator Over Network
US11940940B2 (en) External exchange connectivity
Baudisch et al. Efficient handling of arrays in dataflow process networks
Dinavahi et al. Many-Core Processors
CN116303226A (zh) 粗粒度可重构阵列数据流处理器的高效执行方法及系统
WO2014119003A1 (ja) コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法
US20130061028A1 (en) Method and system for multi-mode instruction-level streaming
Balevic Exploiting multi-level parallelism in streaming applications for heterogeneous platforms with GPUs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180213

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181024

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20181102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190315

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190425

R150 Certificate of patent or registration of utility model

Ref document number: 6525286

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