JP2020027591A - 高位合成マルチプロセッサシステム等 - Google Patents

高位合成マルチプロセッサシステム等 Download PDF

Info

Publication number
JP2020027591A
JP2020027591A JP2018153737A JP2018153737A JP2020027591A JP 2020027591 A JP2020027591 A JP 2020027591A JP 2018153737 A JP2018153737 A JP 2018153737A JP 2018153737 A JP2018153737 A JP 2018153737A JP 2020027591 A JP2020027591 A JP 2020027591A
Authority
JP
Japan
Prior art keywords
instruction
processor
processors
multiprocessor system
circuit
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
JP2018153737A
Other languages
English (en)
Other versions
JP6531927B1 (ja
Inventor
英樹 田沼
Hideki Tanuma
英樹 田沼
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.)
ELAMINA CO Ltd
Original Assignee
ELAMINA CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ELAMINA CO Ltd filed Critical ELAMINA CO Ltd
Priority to JP2018153737A priority Critical patent/JP6531927B1/ja
Priority to US17/269,114 priority patent/US11366662B2/en
Priority to PCT/JP2018/030939 priority patent/WO2020035957A1/ja
Application granted granted Critical
Publication of JP6531927B1 publication Critical patent/JP6531927B1/ja
Publication of JP2020027591A publication Critical patent/JP2020027591A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/177Initialisation or configuration control
    • 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/3824Operand accessing
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

【課題】高度なアルゴリズムを容易にほぼ最小規模の回路で実現可能な高位合成マルチプロセッサシステムを提供すること【解決手段】 共有メモリを複数バンクに分割し、各メモリバンク209〜212に個別のプロセッサ217〜220を接続する。プロセッサは接続されたメモリバンクから命令コードとオペランドを受け取り、演算を実行した後、演算結果を隣接するプロセッサ要素に送付し、次の命令実行時のアキュムレータの値とする。演算実行するソフトウェアプログラムは固定されており、各プロセッサのうちソフトウェアプログラム中の各命令を処理するプロセッサは一意に特定されるようにし、各プロセッサは、マルチプロセッサシステムで実行可能な全ての命令のうち、自己が処理する命令を実行する機能を実装し、自己が処理しない命令を実行する機能を有さないようにし、未使用命令を削減した回路構成とする。【選択図】 図2

Description

本発明は、高位合成マルチプロセッサシステム等に関し、例えば、マルチプロセッサアーキテクチャ上のソフトウェア記述によるハードウェア設計法および、それを効率的な回路で実現するための高位合成に関する。特に、マルチプロセッサアーキテクチャを利用したASICまたはSoC設計法に関する。
ASICやSoCの開発において、従来はハードウェア記述言語による回路設計が広く用いられてきた。しかしハードウェア記述言語ではソフトウェア記述言語と比較すると、アルゴリズムの実装においてしばしば煩雑な順序回路の記述が必要となるため、開発の負荷が大きい。アルゴリズムの実装におけるこの負荷を軽減するため、ソフトウェア記述言語による回路設計を実現する、高位合成と呼ばれる技法が発達してきた。
高位合成の最も基本的な構成として、ソフトウェアとして記述された処理内容をレジスタ転送レベルの論理に変換し、ハードウェア記述言語に変換した上で論理合成する方式が考えられる。この方式の問題は、ソフトウェアの記述量が増加するとともにハードウェア記述言語の記述量も増加し、その結果生成される回路規模も増大する点にある。
別の構成としてはマイクロプロセッサとソフトウェアの組み合わせが考えられる。この場合、演算器が命令実行ユニットとして共有され、ソフトウェアで選択される命令の組み合わせとして処理を実行するため、回路規模は命令セットにより定まる。
処理に必要な命令数が多く、必要なタイミングでの信号生成が困難となるような場合、マルチプロセッサによる並列処理で処理性能を補う必要がある。ただし、メモリアクセス調停やキャッシュメモリ等、実行タイミングの乱れを生じる機構を避ける必要がある。
並列処理実行のためにマルチプロセッサを利用した場合、命令実行ユニットがプロセッサ要素数分重複するために、再び回路規模の増大が問題となる。命令セットから未使用命令を削減することで回路規模を抑えることが可能となるが、従来の対称型マルチプロセッサ構成では共有メモリ上の命令が任意のプロセッサ要素で実行される可能性があり、その効果は限定的となる。
本発明は、ハードウェアをマルチプロセッサ上の固定したソフトウェアとして記述し、そのソフトウェアを実行するための必要最小限の機能のみを有するマルチプロセッサシステムの回路を出力することで、ハードウェア設計をソフトウェア設計に置き換えて簡易化し、かつ効率的な回路を実現し、上記の諸問題の課題を解決することを目的とする。上述した課題はそれぞれ独立したものとして記載しているものであり、本発明は、必ずしも記載した課題の全てを解決できる必要はなく、少なくとも一つの課題が解決できれば良い。またこの課題を解決するための構成についても単独で分割出願・補正等により権利取得する意思を有する。
(1)上述した課題を解決するために、本発明の高位合成マルチプロセッサシステムは、複数のプロセッサを有するマルチプロセッサシステムにおいて、それら各プロセッサには、対応するメモリバンクがそれぞれ割り当てられ、各プロセッサは、前記対応するメモリバンクからのメモリ出力信号線を介して、命令コード及びオペランドを即値として読み込んで、汎用レジスタを介することなくその命令コードに基づく処理を実行するようにし、演算実行するソフトウェアプログラムは固定されており、前記各プロセッサのうち前記ソフトウェアプログラム中の各命令を処理するプロセッサは一意に特定されるようにし、前記各プロセッサは、前記マルチプロセッサシステムで実行可能な全ての命令のうち、自己が処理する命令を実行する機能を実装し、自己が処理しない命令を実行する機能を有さないように構成した。
本発明によれば、高位合成マルチプロセッサシステムは、複数のプロセッサが与えられたソフトウェアプログラムの各命令を、適宜の順で実行する。よって、同一のソフトウェアプログラムを実行した場合、当該ソフトウェアプログラム中の所定のアドレス・ステップにある命令を実行するプロセッサは、常に同じになる。そして、本発明の高位合成マルチプロセッサシステムが実行するソフトウェアプログラムの内容は固定されているので、個々のプロセッサにおいて、高位合成マルチプロセッサシステムで実行可能な命令の内、未使用命令が特定される。そして、個々のマルチプロセッサを構成する個々のプロセッサは、自己が処理しない命令を実行する機能を備えず、削減を図る。つまり、マルチプロセッサ上のソフトウェアとしてハードウェアを記述し、未使用命令を削減したマルチプロセッサの回路を出力する高位合成により、高度なアルゴリズムを容易にほぼ最小規模の回路で実現可能となる。さらにコンパイラの開発で任意の高級言語での高位合成を可能とする。
回路規模の上限を命令セットとプロセッサ数により容易に見積もることが可能で、ソフトウェア記述量の増加により極端に回路規模が増大せず、最終的にソフトウェアを固定した上でメモリバンク毎に命令のカバレッジ状況に応じて不要回路を削減できることから、性能やリソースの不足による手戻りのないスケーラブルな設計が可能となる。
(2)前記マルチプロセッサシステムは、入力ポート操作命令及びまたは出力ポート操作命令を持ち、外部とのインターフェースとなる入力ポートからの信号入力及びまたは外部とのインターフェースとなる出力ポートへの信号出力を行う機能を備え、前記各プロセッサのうち前記入力ポート操作命令を処理するプロセッサは、前記入力ポートに接続し、前記入力ポート操作命令を処理しないプロセッサは、前記入力ポートに接続しないように構成し、前記各プロセッサのうち前記出力ポート操作命令を処理するプロセッサは、前記出力ポートに接続し、前記出力ポート操作命令を処理しないプロセッサは、前記出力ポートに接続しないように構成するとよい。
このようにすると、本発明の高位合成マルチプロセッサシステムは、入力ポートからの信号入力及びまたは出力ポートへの信号出力ができる。この入出力ポートが高位合成で出力された回路と外部とのインターフェースとなる。そして、入力ポート操作命令を処理しないプロセッサは、入力ポートに接続せず、出力ポート操作命令を処理しないプロセッサは出力ポートに接続しない構成としたので、回路構成等が簡略化されるので良い。
(3)前記各プロセッサのうちの一つのプロセッサのみが、前記出力ポート操作命令を処理するプロセッサとなり、その前記出力ポート操作命令を処理するプロセッサは、調停機能を介することなく前記出力ポートに接続する構成とすると良い。例えば、出力ポート操作命令を処理しないプロセッサは、上述したとおり当該出力ポート操作命令を実行する機能を備えずに機能・回路が削減される。そして、出力ポート操作命令を処理するプロセッサが複数あると、プロセッサ間での調停が必要となるが、上記のように、例えば、例えば1つのプロセッサからのみ行われるようになっていると、他のプロセッサでは出力機能を削除し、出力機能を残したプロセッサは、他のプロセッサとの調停を行うことなく出力できるので処理が簡易かつ高速になり、構成も調停機能が不要なので簡略化されて良い。
(4)プログラム実行メモリ上のオペランドを初期化することで前記メモリバンクの初期化を行う初期化機能を備え、前記初期化機能は、ソフトウェアプログラムにより実現されるようにするとよい。ソフトウェアプログラムから構成される初期化機能を実行することで、例えば電源投入時の初期化シーケンスがソフトウェア化され、回路規模を抑えることができる。
(5)(1)から(4)のいずれか1つに記載の高位合成マルチプロセッサシステムの前記各プロセッサが実行する前記ソフトウェアプログラムを構成する全ての命令について、前記各プロセッサのうちどのプロセッサで実行するかを検出し、前記プロセッサごとに、それぞれ処理する命令或いは処理しない命令を検出する検出機能と、その検出機能の検出結果に基づき、前記各プロセッサのハードウェア構成を求め、出力する機能を備えるシステムとするとよい。このようにすると、ソフトウェアプログラムを実行する複数の各プロセッサについて、未使用命令を削減したマルチプロセッサの回路を出力することができる。
本発明は、マルチプロセッサ上のソフトウェアとしてハードウェアを記述し、未使用命令を削減したマルチプロセッサの回路を出力する高位合成により、高度なアルゴリズムを容易にほぼ最小規模の回路で実現可能となる。
本発明の実施形態に係るプロトタイプ用マルチプロセッサシステム100の構成を示すブロック図である。 本発明の実施形態に係る高位合成マルチプロセッサシステム200の構成を示すブロック図である。 本発明の実施形態に係るメモリ出力データ300、命令コード301及びオペランドY302のビット構成を示す図である。 本発明の実施形態に係るアキュムレータA400、キャリーフラグC401、レジスタX402、プログラムカウンタPC403及びロックカウンタLC404のビット構成を示す図である。 本発明の実施形態に係る高位合成マルチプロセッサシステムにおけるメモリ領域毎のメモリ種別(書き換え可/不可)を示す図である。 本発明の実施形態に係る命令コードの割り当て例とその実行内容を示す図である。 本発明の実施形態に係る命令処理回路を示すブロック図である。 高位合成を行うシステムの一例を示す図である。 本発明の実施形態に係る命令コード(4ビット)の割り当て例とその実行内容を示す図である。 演算ツリーを構成するコード列の例を示す図である。 LOCK命令を利用したクリティカルセクションの実装例を示す図である。
以下、本発明の好適な実施形態について図面に基づき、詳細に説明する。なお、本発明は、これに限定されて解釈されるものではなく、本発明の範囲を逸脱しない限りにおいて、当業者の知識に基づいて、種々の変更、修正、改良を加え得るものである。
図1は、本発明に係る高位合成マルチプロセッサシステムの前提となるプロトタイプ用マルチプロセッサシステム100の構成の一例を示すブロック図である。本発明の実施形態に係るプロトタイプ用マルチプロセッサシステム100は、4個のプロセッサ109〜112を有する4プロセッサ構成である。各プロセッサ109〜112は、それぞれ対応するメモリバンク101〜104を備える。
各メモリバンク101〜104は共有メモリ全体のアドレス空間のうち下位2ビットが00、01、10、11となる部分のイメージを保持し、各プロセッサ109〜112が同時に異なるメモリバンクにアクセスを行う分散共有メモリを構成する。
各プロセッサ109〜112とメモリバンク101〜104を一対一に対応しており、個々のプロセッサ109〜112は対応するメモリバンクにしかアクセスしないように構成している。これにより、各プロセッサ109〜112は、他のプロセッサの処理を気にすることなく対応するメモリバンクに読み書き可能となる。共有メモリをアドレスの下位ビットに応じて分割して各メモリバンク101〜104と形成し、各プロセッサ109〜112に割り当て1命令実行する毎に、次のプロセッサに制御を移す。各プロセッサの実行は、互いに独立で決して邪魔されないように構成する。
各プロセッサ109〜112は、対応するメモリバンク101〜104からメモリ出力信号105〜108を通して命令コード301及び1語長のオペランド302を同時に受け取り、対応する処理を実行する。図3は、メモリ出力データ300のビット構成を示す。
プロセッサは、命令コード301で選択される命令に従い、オペランドY302及びアキュムレータA400を入力として演算を実施し、結果をアキュムレータA400、プログラムカウンタPC403及びロックカウンタLC404に反映する。
命令コード301の命令コード長は、例えば4ビット或いは8ビットとすると良く、例えば8ビットとした場合の命令セットの一例を示すと、図6のようになる。実行内容でプログラムカウンタPC403に何も代入されていない場合、PC←PC+1としてインクリメントされるものとする。
ニーモニックPUTで表される命令により、メモリ上の任意の番地のオペランドY302を変更することができる。具体的には、プロセッサは、PUT命令実行時のオペランドY302で指定されるメモリ番地の命令に対するオペランドY302を、命令実行時のアキュムレータA400の値で置き換える。
ロックカウンタLC404の値が0の場合、実行バンクはアンロック状態となり、LOCK命令にて値の設定が可能となる。その後設定した値のサイクル数だけロック状態となり、カウンタ値が1ずつカウントダウンして0となると再びアンロック状態となる。
実行バンクがロック状態でLOCK命令を実行した場合、ロックカウンタLC404の値は設定されず、同じ番地にジャンプしてスピンロックを実行する。
プロセッサ109〜112は、命令処理を実行後、スレッド状態をスレッド状態委譲信号113〜116を通して次のバンクに対応するプロセッサに委譲する。スレッド状態委譲信号113〜116は、プロセッサ同士を繋ぐ信号線を通して送られる。委譲先のプロセッサは、アキュムレータA400及びプログラムカウンタPC403が命令実行結果により更新する。ロックカウンタLC404はバンク固有のため、次のバンクに委譲されない。
システム外部との通信は入出力ポートにて行う。システム入力ポート121の信号は各プロセッサの入力ポート117〜120に入力され、入出力ポート操作命令の結果アキュムレータA400に反映される。
各プロセッサの出力ポート122〜125は入出力ポート操作命令実行時のみオペランド302、レジスタ402及びストローブ信号が出力され、入出力ポート操作命令実行時以外は0を出力する。
各プロセッサの出力ポート122〜125は論理和回路126により1つの出力ポート信号に纏められ、システム出力ポート127に接続される。この機構により、複数のプロセッサが同時に入出力ポート操作命令を実行しない限りにおいて、入出力ポート操作命令時のプロセッサの出力ポート122〜125と同一の信号がシステム出力ポート127に出力される。
図2は、本発明に係る高位合成マルチプロセッサシステム200の好適な一実施形態を示すブロック図である。図5は、その高位合成マルチプロセッサシステムにおけるメモリ領域毎のメモリ種別(書き換え可/不可)を示す図である。高位合成マルチプロセッサシステム200は、プロトタイプ用マルチプロセッサシステム100と同様に、4個のプロセッサ217〜220を有する4プロセッサ構成である。各プロセッサ217〜220は、それぞれ対応するメモリバンクであるプログラム実行メモリ209〜212を備える。
各プロセッサ217〜220とプログラム実行メモリ209〜212を一対一に対応しており、個々のプロセッサ217〜220は対応するメモリバンクであるプログラム実行メモリ209〜212にしかアクセスしないように構成している。これにより、各プロセッサ217〜220は、他のプロセッサの処理を気にすることなく対応するプログラム実行メモリに読み書き可能となる。
本実施形態の高位合成マルチプロセッサシステム200は、確定したメモリ上のソフトウェアが実行可能となる最小限の回路により構成される。図5に示す通り、メモリ上の命令コード301は書き換え不可となるため、各プロセッサはバンク毎にこれらの命令のみに限定した回路として出力される。
本実施形態の高位合成マルチプロセッサシステム200は、一つのプロセッサがメモリ上の全ての命令を順番に実行するのではなく、4個のプロセッサのうちの一つのプロセッサがメモリの所定のアドレスにある一つの命令を実行すると、スレッド状態委譲信号を受けた次のプロセッサが次のアドレスにある一つの命名を実行するというように、各プロセッサがバケツリレーのように順番に実行する。換言すると、プログラムが、各プロセッサを順番に渡り歩きながら、一命令ずつ所定のプロセッサに処理してもらう。但し、プログラム中の各命令を実行するプロセッサは一意に特定されており、所定のアドレス・ステップの命令を実行するプロセッサが変わることはない。よって、各プロセッサにおいて、実行する演算命令は限定される。
図1と図2を比較すると明らかなように、プロトタイプ用マルチプロセッサシステム100と高位合成マルチプロセッサシステム200は、ともにプロセッサ109〜112と、プロセッサ217〜220を備えた4プロセッサ構成をとり、その部分はブロック図としては同じであるが、各プロセッサの内部構成・機能が異なる。具体的には、プロトタイプ用マルチプロセッサシステム100に実装されるプロセッサ109〜112は、例えば図6に示す命令コードを全て実行する機能を備えるプロセッサであり、4つのプロセッサ109〜112は、同一構成となる。
これに対し、本実施形態の高位合成マルチプロセッサシステム200に実装されるプロセッサ217〜220は、実行するプログラムに応じてそれぞれがカスタマイズされたものである。すなわち、上述したように本実施形態の高位合成マルチプロセッサシステム200は、固定のソフトウェア(プログラム)を実行するものであり、各プロセッサは、例えばバケツリレー方式のように順番に命令を実行する。よって、当該プログラムに記述された同じアドレスの命令を実行するプロセッサは、一意に特定され、別のプロセッサが当該命令を実行することはない。従って、各プロセッサは、プログラム中の実行する命令が特定・限定されるため、自己が実行しない命令を実行する機能を削除した構成にする。例えば、掛け算命令を実行しないプロセッサは、かけ算の機能を削除する。
高位合成マルチプロセッサシステム200をASICで実現する場合、図5で示すようにプログラム実行メモリ209〜212のオペランドY302はRAMで構成されるため、電源投入時に不定となり得る。そのような場合、IPLROM201〜204を利用してRAM領域の初期化を行う。
高位合成マルチプロセッサシステム200をFPGAで実現し、コンフィギュレーション時にRAM内容の設定が可能な場合、あるいは他の手段でRAM領域の初期化が可能な場合は、IPLROM201〜204及びIPLROM信号205〜208を省略することができる。
IPLROM201〜204によるプログラム実行メモリ209〜212の初期化は、共有メモリ空間上にIPLROMとプログラム実行メモリを配置して、IPLROM上の命令コード実行によりプログラム実行メモリ上のオペランドY302を初期化することで行う。この構成により電源投入時の初期化シーケンスがソフトウェア化され、回路規模を抑えることができる。初期化処理をソフトウェアで実現できるため、初期化コードのメモリ領域が消費されるのみで、初期化終了後にメモリ領域を作業用として再利用することも可能である。
IPLROM上の初期化シーケンスコードは、アキュムレータA400を設定するLOAD命令、プログラム実行メモリ領域のオペランドY302を設定するPUT命令、及び初期化シーケンス終了後プログラム実行メモリにジャンプする命令のみで構成可能である。
入出力ポート操作命令のバンク毎のカバレッジ状況により、高位合成結果におけるバス配線も最適化される。図1に示すプロトタイプ用マルチプロセッサシステム100は、入力ポート121の信号が全てのプロセッサ109〜112の入力ポート117〜120に接続している。これに対し、例えば高位合成マルチプロセッサシステム200でバンク0及びバンク3のみで入力ポートを読み取る場合、入力ポート信号227は当該バンクのプロセッサ217とプロセッサ220の入力ポート225,226にのみ接続し、プロセッサ218とプロセッサ219には接続しない構成をとる。
同様に、プロトタイプ用マルチプロセッサシステム100は、全てのプロセッサ109〜112の出力ポート122〜125を論理和回路126に接続し、論理和回路126の出力が出力ポート127に接続している。これに対し、例えば高位合成マルチプロセッサシステム200でバンク1のプロセッサ218のみが出力ポートを操作する場合、論理和回路を省略し、プロセッサ218の出力ポート228を外部出力ポート229に直接接続し、他のプロセッサを外部出力ポート229に接続しない構成を採る。
出力がどのプロセッサからも行われる構成の場合、プロセッサ間での調停が必要となるが、上記のように、例えば、1つのプロセッサからのみ行われるようになっていると、他のプロセッサでは出力機能を削除し、出力機能を残したプロセッサは、他のプロセッサとの調停もなく出力できるのでよい。
また、上述したようにマルチプロセッサアーキテクチャが実現される高位合成マルチプロセッサシステム200において、例えば共有メモリはアドレスの下位ビットに応じて複数バンクに分割され、各メモリバンクには個別のプロセッサ要素が接続される。隣接したアドレスに対応するバンクのプロセッサ間で、レジスタ値及びプログラムカウンタ値を含むスレッド状態を移譲するためのバス配線が接続され、全体で環状の接続構造となる。全てのプロセッサ要素は同一サイクル内で同時に命令実行を行い、次のプロセッサ要素に実行結果を移譲する。この機構により、プロセッサ要素と同じ数のスレッドが並列に実行される。
プロセッサ要素は接続されたメモリバンクからプログラムカウンタで指示されるアドレスの命令コードを読出し、付属の演算装置にて命令コードに応じた演算を実行する。演算を実行したプロセッサ要素は接続されたプロセッサ要素に演算結果のレジスタ値及びプログラムカウンタ値を送出し、スレッド状態を委譲する。
制御を伴わない演算等の命令においてはプログラムカウンタ値がインクリメントされるため、接続先のプロセッサでもプログラムカウンタ値の下位ビットとバンク割り当てアドレスの下位ビットが再び一致する。
ジャンプ命令等によりプログラムカウンタ値の下位ビットとバンク割り当てアドレスの下位ビットが一致しなくなった場合、スレッドを休止状態として命令実行せずに以前の状態をそのまま次のプロセッサに委譲する。移譲の結果アドレスの下位ビットが一致した場合、スレッドは命令実行を再開する。
図7は、本発明の実施形態に用いられる命令処理回路の一例を示すブロック図である。係る命令処理回路が、例えばプロトタイプ用マルチプロセッサシステム100のプロセッサ109〜112に実装される。そして、以下に説明するように、高位合成マルチプロセッサシステム200のプロセッサ217〜220は、適宜の回路要素を省略或いは簡略化する。論理演算命令は、命令コードの下位4ビットの値に応じ、オペランドY302、レジスタX402、これらの論理積X&Y、及び全ビット反転の組み合わせにより、レジスタX402の値を更新する。論理演算命令において、キャリーフラグC401の値は保持される。
GET/DATA命令においてはオペランドY302の値をレジスタX402に代入し、LOCK命令、HALT命令、PUT命令においてはレジスタX402の値を保持するが、これらの処理も論理演算命令と同一の回路で実施する。命令コード00〜7Fの命令においては、論理演算命令と同一の回路によりアキュムレータA400の更新値を計算する。
論理演算命令オペランドY選択回路701は、命令コードが16進法表記で下位の桁が0、2、4、6、8、A、C、Eのいずれかである場合にオペランドY302の値を出力し、それ以外の場合は0を出力する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記で上位の桁が0〜7かつ、下位の桁が0、2、4、6、8、A、C、Eのいずれかであるような命令コードが存在しない場合、論理演算命令オペランドY選択回路701は、常に0のみを出力する回路に簡略化される。
論理演算命令レジスタXオペランドY論理積選択回路702は、命令コードが16進法表記で下位の桁が2、3、6、7、A、B、E、Fのいずれかである場合にレジスタX402とオペランドY302の論理積の値を出力し、それ以外の場合は0を出力する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記で上位の桁が0〜7かつ、下位の桁が2、3、6、7、A、B、E、Fのいずれかであるような命令コードが存在しない場合、論理演算命令レジスタXオペランドY論理積選択回路702は、常に0のみを出力する回路に簡略化される。
論理演算命令レジスタX選択回路703は、命令コードが16進法表記で下位の桁が4、5、6、7、C、D、E、Fのいずれかである場合にレジスタX402の値を出力し、それ以外の場合は0を出力する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記で上位の桁が0〜7かつ、下位の桁が4、5、6、7、C、D、E、Fのいずれかであるような命令コードが存在しない場合、論理演算命令レジスタX選択回路703は、常に0のみを出力する回路に簡略化される。
論理演算命令ビット反転選択回路704は、命令コードが16進法表記で下位の桁が8〜Fである場合に−1を出力し、それ以外の場合は0を出力する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記で上位の桁が0〜7かつ、下位の桁が8〜Fであるような命令コードが存在しない場合、論理演算命令ビット反転選択回路704は、常に0のみを出力する回路に簡略化される。
論理命令排他的論理和出力回路705は、論理演算命令オペランドY選択回路701、論理演算命令レジスタXオペランドY論理積選択回路702、論理演算命令レジスタX選択回路703、論理演算命令ビット反転選択回路704の出力の排他的論理和を計算し、キャリーフラグC401を付加して論理演算命令によるアキュムレータA400の更新値を出力する。
加減算命令選択回路706は、命令コードが16進法表記でC0〜CFの場合に加減算命令によるアキュムレータA400の更新値を出力し、それ以外の場合は論理命令排他的論理和出力回路705の出力を通過する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記でC0〜CFの命令コードが存在しない場合、加減算命令選択回路706は、常に論理命令排他的論理和出力回路705の出力を通過する回路に簡略化される。
乗算/シフト命令選択回路707は、命令コードが16進法表記でD0〜DFの場合に乗算/シフト命令によるアキュムレータA400の更新値を出力し、それ以外の場合は加減算命令選択回路706の出力を通過する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記でD0〜DFの命令コードが存在しない場合、乗算/シフト命令選択回路707は、常に加減算命令選択回路706の出力を通過する回路に簡略化される。
高位合成マルチプロセッサシステム200において、同一バンクのメモリ内に乗算命令の命令コードが存在せず、シフト命令の命令コードが存在する場合、乗算/シフト命令選択回路707内の演算処理を、より軽量なバレルシフタによる構成に置き換える。同一バンクのメモリ内に乗算命令とシフト命令の命令コードが共に存在する場合、シフト命令の演算は乗算回路を利用した構成とする。
入出力ポート命令選択回路708は、命令コードが16進法表記でE0〜FFの場合に入出力ポート命令によるアキュムレータA400の更新値およびリトライ信号を出力し、それ以外の場合は乗算/シフト命令選択回路707の出力を通過し、リトライ信号として0を出力する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記でE0〜FFの命令コードが存在しない場合、入出力ポート命令選択回路708は、常に乗算/シフト命令選択回路707の出力を通過し、リトライ信号として0を出力する回路に簡略化される。
入出力ポート命令選択回路708は、命令コードの下位ビットでポートを切り替える構成の場合、ポート毎に選択回路が細分される。高位合成マルチプロセッサシステム200においては、ポート毎に同一バンク内のメモリで命令コードの存在が判定され、不存在の場合、同様に回路が簡略化される。
ジャンプ命令時アキュムレータ保持選択回路709は、命令コードが16進法表記で80〜BFの場合にアキュムレータA400の旧値を出力し、それ以外の場合は入出力ポート命令選択回路708の出力を通過する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記で80〜BFの命令コードが存在しない場合、ジャンプ命令時アキュムレータ保持選択回路709は、常に入出力ポート命令選択回路708の出力を通過する回路に簡略化される。
ジャンプ命令時アキュムレータ保持選択回路709の出力は、命令実行後アキュムレータ出力710として隣接するバンクのプロセッサ要素に接続される。
プログラムカウンタインクリメント回路711は、プログラムカウンタPC403に1を加算した値を計算する。
LOCK命令処理回路714は、命令コードが16進法表記で20〜2Fの場合にLOCK命令の処理を実行し、ロック取得失敗時にリトライ信号1を出力する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記で20〜2Fの命令コードが存在しない場合、LOCK命令処理回路714は、常にリトライ信号0を出力する回路に簡略化される。
HALT命令処理回路715は、命令コードが16進法表記で30〜3Fの場合にHALT命令の処理を実行し、リトライ信号1を出力する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記で30〜3Fの命令コードが存在しない場合、HALT命令処理回路715は、常にリトライ信号0を出力する回路に簡略化される。
PUT命令処理回路716は、命令コードが16進法表記で40〜7Fの場合にPUT命令の処理を実行し、ライトバック衝突時にリトライ信号1を出力する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記で40〜7Fの命令コードが存在しない場合、PUT命令処理回路716は、常にリトライ信号0を出力する回路に簡略化される。
リトライ信号論理和回路713は、LOCK命令処理回路714、HALT命令処理回路715、PUT命令処理回路716、入出力ポート命令選択回路708の出力の論理和を計算し、リトライ信号処理選択回路712におけるリトライ信号入力をする。
リトライ信号処理選択回路712は、リトライ信号論理和回路713出力のリトライ信号が1の場合、プログラムカウンタPC403の旧値を出力し、それ以外の場合、プログラムカウンタインクリメント回路711の出力を通過する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記で20〜7FもしくはF0〜FFの命令コードが存在しない場合、リトライ信号論理和回路713を含むリトライ信号処理選択回路712は、プログラムカウンタインクリメント回路711の出力を通過する回路に簡略化される。
ジャンプ命令処理回路717は、命令コードが16進法表記で80〜BFの場合にジャンプ条件を判定し、条件成立時はオペランドY302の値を出力し、それ以外の場合はリトライ信号処理選択回路712の出力を通過する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記で80〜BFの命令コードが存在しない場合、ジャンプ命令処理回路717は、リトライ信号処理選択回路712の出力を通過する回路に簡略化される。
GET/DATA命令時ジャンプ先選択回路718は、命令コードが16進法表記で00〜0Fの場合にレジスタX402の値を出力し、それ以外の場合はジャンプ命令処理回路717の出力を通過する。高位合成マルチプロセッサシステム200においては、同一バンクのメモリ内に16進法表記で00〜0Fの命令コードが存在しない場合、GET/DATA命令時ジャンプ先選択回路718は、ジャンプ命令処理回路717の出力を通過する回路に簡略化される。
GET/DATA命令時ジャンプ先選択回路718の出力は、命令実行後プログラムカウンタ出力719として隣接するバンクのプロセッサ要素に接続される。
上述した高位合成マルチプロセッサシステム200を構成する個々のプロセッサ217〜220のハードウェア構成は、例えば、図8に示す処理装置800により作成する。高位合成マルチプロセッサシステム200で実行するプログラムを処理装置800に与える。
処理装置800は、入力されたプログラムを上から順に、各ステップの記述内容を確認し、都度、以下の処理を実行する。
(1)処理装置800は、プログラムのステップ番号から、そのステップの命令を実行するプロセッサを特定する。
(2)処理装置800は、処理対象のステップの命令コードを抽出し、抽出した16進法表記から、(1)で特定したプロセッサに関連付けられた実行命令リストの所定の実行命令のフラグを立てる。すなわち、処理装置800は、例えば、プロセッサ毎に、図6,図7に示す実行可能なすべての実行命令の項目と、フラグ項目を関連付けた実行命令リストを記憶保持する。この実行命令のフラグ項目の初期値は、全て0にする。そして、上記の処理を実行し、処理装置は、対応する実行命令のフラグ項目を立てる(1にする)。
例えば、処理対象のステップ番号からプロセッサ217〜220(バンク0〜3)のどれが実行するかを特定する。例えば、プロセッサ217(バンク0)が実行するステップの場合、処理装置800は、バンク0のプロセッサの関連付けられた実行命令リストにおける所望の実行命令のフラグを立てる。所望の実行命令は、例えば、命令コードが16進法表記でD0〜DFの場合、「乗算/シフト命令」であり、命令コードが16進法表記でC0〜CFの場合、「加減算命令」である。
(3)上記の(1),(2)の処理を繰り返しながら、最終ステップまで来ると、各プロセッサで実行する命令が確定する。処理装置800は、プロセッサ毎に、「実行する命令」及びまたは「実行しない命令」を特定する情報(ハードウェア構成)を作成し、出力する。このハードウェア構成の出力機能は、例えば、それらの情報を記載したものをプリントアウトしたり表示したりする機能等がある。
上述した実施形態では、プロトタイプ用マルチプロセッサシステム100並びにそれに基づいて生成される高位合成マルチプロセッサシステム200が実行する命令は、コード長を8ビットとし、図6に示す内容とした。本発明はこれに限ることはなく、例えば、命令コード長が、4ビットその他のビット数としても良く、4ビットとした場合の命令セットの一例は、図9のようになる。この例示した4ビットの命令セットを用いたマルチプロセッサシステムについて説明すると、以下の通りである。
図4において示されるように、アキュムレータ400は1語長のレジスタ402及びその上位のキャリーフラグ401で構成される。論理演算はレジスタ402に対してのみ実行され、加減算はキャリーフラグを含めたアキュムレータ全体について実行される。キャリーフラグは特殊命令実行時の結果通知にも利用され、条件ジャンプ命令実行時の条件としても利用される。
演算命令においてはアキュムレータとオペランドの間で2項演算が実行され、演算結果がアキュムレータ信号を通して次のプロセッサに送出され、新たなアキュムレータの値として反映される。
命令コード301と同時にオペランド302が即値としてプロセッサに読み込まれるため、レジスタファイルアクセスのためのオーバーヘッド無しに即座に命令実行が可能である。即値とレジスタアクセスの区別が不要であるため、必要となる命令コード数は著しく減少し、本形態のように4ビット程度で基本的な命令はカバー可能である(図9参照)。
メモリ上のオペランド302を読み込み前に予め書き換えておくことにより、任意のオペランドを汎用レジスタとして使用することが可能となる。この機能は、オペランド302で指定されたアドレスのメモリに格納されたオペランド302を、レジスタ402の値に書き換えるランダムアクセス書き込みを実行するPUT命令を実装することで実現可能である。この命令により、任意の演算ツリーを構成することが可能となる。図10は(A−B)+(C−D)を計算するコード列の例である。
ランダムアクセス書き込みは、同一バンクに対するメモリ読み込みまで遅延しても、スレッド内に於けるメモリ一貫性を損なうことはない。そのため書き込み信号としてバンク0書き込み信号105,213、バンク1書き込み信号106,214、バンク2書き込み信号107,215、バンク3書き込み信号108,216が、書き込みアドレス、データ及びイネーブル信号を保持する。書き込み信号はプロセッサ内部状態と並行してプロセッサ間を移動し、対象バンク到着時にバンクメモリへのライトバック処理を実行する。
命令及びオペランドのフェッチとライトバックが同一のアドレスに対して実行された場合、ライトバックの際に書き込まれたデータが即座に命令及びオペランドとして読み込まれるものとする。この構成により、命令の直後の番地への書き込みも次のフェッチの際に反映され、問題なく実行される。FPGA内部のデュアルポートメモリを利用する場合、異なるポートからの同一アドレスに対する同時読み書きの結果が不定となるものがあるが、メモリ周辺にバイパス回路を実装することで、この問題を回避することが可能である。
ランダムアクセス書き込み命令実行時、対象バンクの書き込み信号入力が既にイネーブルである場合、書き込み命令の実行を一旦中止し、同一アドレスへのジャンプを実行して書き込み命令の再試行を行う。ジャンプ命令の回転待ちの際にもライトバックが実行されるため、再試行時には全てのライトバックが実行済みで書き込みの衝突が起きることはない。書き込みの再試行は4命令分のペナルティとなるため、コンパイル時に同一バンクへの連続した書き込みを避けることと、直後にライトバックが実行されるバンクへの書き込みを優先して配置することで、この書き込みの再試行を防ぐことができる。
同一アドレスへの書き込みを故意に連続して実行することで、書き込みの衝突による回転待ちが発生し、同一スレッドの全てのライトバックが実行され、他のスレッドに対するメモリ内容が確定する。これをスレッド間通信に於けるメモリバリアとして利用することができる。
ランダムアクセス書き込みの際、アドレスを指定するオペランド302の上位4ビットを命令コードの書き込みに利用することが可能である。具体的には、メモリ空間のアドレスが(語長−4)ビット以内で表現可能な場合、ライトバック時にオペランドの上位4ビットの値を命令コードメモリ301に同時に書き込みを行う。コンパイル時に書き込み先アドレスの命令コードは既に決定しており、命令コード付きアドレスは実行前に確定するため実行中のオーバーヘッドはない。これはスレッド間通信で命令コードとオペランドをアトミックに同時書き換えする際に有効である。
ランダムアクセス書き込みに於けるライトバックの遅延により、通常は異なるスレッド間でメモリの一貫性が保持されないが、LOCK命令の利用により安全なスレッド間通信を実現することができる。LOCK命令は命令を実行するプロセッサに割り当てられたミューテクスを操作する命令で、プロセッサが既にロック状態にある場合には同一番地へのジャンプを実行することでスピンロックを構成し、ロック成功時にはプロセッサがロック状態に移行し、UNLOCK命令実行までロック状態を保持する。プロセッサのロック状態が影響するのはLOCK命令に対してのみであり、他の命令実行には影響しない。
UNLOCK命令はLOCK命令と同じ命令コードであるが、オペランドの値により両者は区別される。LOCK命令のオペランドには0を指定し、命令を実行したプロセッサバンクのミューテクスのロックを実行する。UNLOCK命令のオペランドは、下位4ビットでアンロックするプロセッサのバンクを指定する。UNLOCK命令は任意のプロセッサバンクで実行が可能であり、同時に実行されたUNLOCK命令は、パラメータが全て論理和された上でそれぞれのプロセッサバンクにアンロックを通知する。この通知はロック解除信号バスを通して行われる。
LOCK命令によるロックはプロセッサ毎に割り当てられる粒度の粗いミューテクスであり、ある程度長期のロックが想定されるクリティカルセクション等の応用に於いては、状態遷移時のみの短期ロックに利用することが望ましい。LOCK命令をオペランドで指定されるクロック数期間のみの有期のロックに限定することで、UNLOCK命令を省略することができる。図11は、LOCK命令を利用したスピンロックによるクリティカルセクションの構成例である。
新規スレッドの生成はFORK命令により実行される。スレッド生成時、プロセッサ内の起動待ち行列に新規スレッドの起動アドレス及び初期アキュムレータ値を登録するが、待ち行列が満杯の場合スレッド生成は失敗となる。スレッド生成の成否はキャリーフラグにて通知されるため、ソフトウェアによるリトライ及び待ち行列の構成が可能である。この場合、ハードウェア待ち行列の長さを1にすることで回路規模の削減が可能である。
プロセッサが停止状態で起動待ち行列が空でない場合、新規のスレッドが生成される。具体的には、待ち行列先頭の起動アドレス及び初期アキュムレータ値がプロセッサ内のプログラムカウンタ及びアキュムレータに代入され、プロセッサが実行状態に移行する。
電源投入時にプロセッサ数と同数のスレッドを全て起動状態とする構成も考えられる。この構成の場合、クリティカルセクションと同様の機構によりソフトウェアでスレッドプールが実現できるため、FORK命令を省略することができる。スレッドの動的生成が不要な場合、HALT命令等により、余剰のスレッドを休眠状態にすることができる。
配列や構造体、スタック等のデータ構造を利用する場合、メモリに対するランダムアクセス読み出しの処理が必要となる。この処理はGET命令及びDATA命令により実現できるが、これらの命令の実行内容は同じであり、命令コードも同一のものを使用する。GET命令はレジスタXで指定された番地へのジャンプ及びオペランドYのレジスタXへの代入を行う。レジスタXで指定された番地にDATA命令がある場合、DATA命令はGET命令と同様にレジスタXで指定された番地へのジャンプ及びオペランドYのレジスタXへの代入を行う。DATA命令実行時のレジスタXの値はGET命令に於けるオペランドYの値であるため、全体としてGET命令はレジスタXで指定された番地にあるDATA命令のオペランドYの値をレジスタXに代入し、GET命令のオペランドYで指定される番地にジャンプする命令となる。
データ専用メモリやメモリマップドI/Oに関しては、読み出し時に命令コードとしてDATA命令を補うことにより利用が可能である。特に、メモリや周辺回路を特定のプロセッサにのみ接続することで、同時アクセス調停の回路を省略することが可能となる。
係る4ビットの命令コードに対応するマルチプロセッサシステムにおいても、高位合成マルチプロセッサシステム200で実行するプログラムを固定することで、各プロセッサが実行するプログラム中のステップが一意に特定される。従って、プロトタイプ用マルチプロセッサシステム100のプロセッサは図9等に示す命令の全てを実行する機能を備えるが、高位合成マルチプロセッサシステム200の各プロセッサは、プロトタイプのプロセッサの機能から、自己が実行しない命令を実行する機能を削除した構成にする。
上述したように、命令コードのビット数にかかわらず、プロトタイプ用マルチプロセッサシステム100に比べて高位合成マルチプロセッサシステム200は簡易な構成をとることができる。上述した4ビット構成は、限られた命令であり、例えば掛け算命令などもない。よって、元々命令数が少なく、削減効果が出にくいこともあるが、先に述べた8ビットからなる命令の場合は、命令の数も多く、削減効果が期待できるので、より好ましい。
また、4ビット構成は、限られた命令であり、掛け算命令その他の命令コードを増やすために8ビットにすると、各プロセッサで実行する機能も多くなる。そのため、プロトタイプ用マルチプロセッサシステム100のように各プロセッサが夫々すべての命令に対応する機能を備えると、回路規模が大きくなる。そして、使われない命令の機能を残すのは、単に回路規模を大きくするだけでデメリットしかない。そこで、プロセッサが「実施する」/「実施しない」の命令を特定し、実行しない命令の実行削除し、必要最小限のコンパクトな回路を実現するとよい。さらに具体的な図示は省略するが、命令レコードに「浮動小数点演算」を備えたものの場合、削減する効果がさらに高まる。
以上、本発明の様々な側面を実施形態並びに変形例を用いて説明してきたが、これらの実施形態や説明は、本発明の範囲を制限する目的でなされたものではなく、本発明の理解に資するために提供されたものであることを付言しておく。本発明の範囲は、明細書に明示的に説明された構成や製法に限定されるものではなく、本明細書に開示される本発明の様々な側面の組み合わせをも、その範囲に含むものである。本発明のうち、特許を受けようとする構成を、添付の特許請求の範囲に特定したが、現在の処は特許請求の範囲に特定されていない構成であっても、本明細書に開示される構成を、将来的に特許請求する可能性があることを、念のために申し述べる。
100 プロトタイプ用マルチプロセッサシステム
101〜104 メモリ(バンク0〜3)
105〜108 メモリ入出力信号
109〜112 プロセッサ(バンク0〜3)
113〜116 スレッド状態委譲信号
117〜120 入力ポート(バンク0〜3)
121 入力ポート(システム)
122〜125 出力ポート(バンク0〜3)
126 論理和回路
127 出力ポート(システム)
200 高位合成マルチプロセッサシステム
201〜204 IPLROM(バンク0〜3)
205〜208 IPLROM信号
209〜212 メモリ(バンク0〜3)
213〜216 メモリ入出力信号
217〜220 プロセッサ(バンク0〜3)
221〜224 スレッド状態委譲信号
225〜226 入力ポート(バンク0,3)
227 入力ポート(システム)
228 出力ポート(バンク1)
229 出力ポート(システム)
300 メモリ出力データ
301 命令コード
302 オペランドY
400 アキュムレータA
401 キャリーフラグC
402 レジスタX
403 プログラムカウンタPC
404 ロックカウンタLC
700 命令処理回路ブロック
701 論理演算命令オペランドY選択回路
702 論理演算命令レジスタXオペランドY論理積選択回路
703 論理演算命令レジスタX選択回路
704 論理演算命令ビット反転選択回路
705 論理演算命令排他的論理和出力回路
706 加減算命令選択回路
707 乗算/シフト命令選択回路
708 入出力ポート命令選択回路
709 ジャンプ命令時アキュムレータ保持選択回路
710 命令実行後アキュムレータ出力
711 プログラムカウンタインクリメント回路
712 リトライ信号処理選択回路
713 リトライ信号生成論理和回路
714 LOCK命令処理回路
715 HALT命令処理回路
716 PUT命令処理回路
717 ジャンプ命令処理回路
718 GET/DATA命令時ジャンプ先選択回路
719 命令実行後プログラムカウンタ出力

Claims (5)

  1. 複数のプロセッサを有するマルチプロセッサシステムにおいて、
    それら各プロセッサには、対応するメモリバンクがそれぞれ割り当てられ、各プロセッサは、前記対応するメモリバンクからのメモリ出力信号線を介して、命令コード及びオペランドを即値として読み込んで、汎用レジスタを介することなくその命令コードに基づく処理を実行するようにし、
    演算実行するソフトウェアプログラムは固定されており、前記各プロセッサのうち前記ソフトウェアプログラム中の各命令を処理するプロセッサは一意に特定されるようにし、
    前記各プロセッサは、前記マルチプロセッサシステムで実行可能な全ての命令のうち、自己が処理する命令を実行する機能を実装し、自己が処理しない命令を実行する機能を有さないことを特徴とする高位合成マルチプロセッサシステム。
  2. 前記マルチプロセッサシステムは、入力ポート操作命令及びまたは出力ポート操作命令を持ち、外部とのインターフェースとなる入力ポートからの信号入力及びまたは外部とのインターフェースとなる出力ポートへの信号出力を行う機能を備え、
    前記各プロセッサのうち前記入力ポート操作命令を処理するプロセッサは、前記入力ポートに接続し、前記入力ポート操作命令を処理しないプロセッサは、前記入力ポートに接続しないように構成し、
    前記各プロセッサのうち前記出力ポート操作命令を処理するプロセッサは、前記出力ポートに接続し、前記出力ポート操作命令を処理しないプロセッサは、前記出力ポートに接続しないように構成することを特徴とする請求項1に記載の高位合成マルチプロセッサシステム。
  3. 前記各プロセッサのうちの一つのプロセッサのみが、前記出力ポート操作命令を処理するプロセッサとなり、その前記出力ポート操作命令を処理するプロセッサは、調停機能を介することなく前記出力ポートに接続することを特徴とする請求項2に記載の高位合成マルチプロセッサシステム。
  4. プログラム実行メモリ上のオペランドを初期化することで前記メモリバンクの初期化を行う初期化機能を備え、
    前記初期化機能は、ソフトウェアプログラムにより実現されることを特徴とする請求項1から3のいずれか1項に記載の高位合成マルチプロセッサシステム。
  5. 請求項1から4のいずれか1項に記載の高位合成マルチプロセッサシステムの前記各プロセッサが実行する前記ソフトウェアプログラムを構成する全ての命令について、前記各プロセッサのうちどのプロセッサで実行するかを検出し、前記プロセッサごとに、それぞれ処理する命令或いは処理しない命令を検出する検出機能と、
    その検出機能の検出結果に基づき、前記各プロセッサのハードウェア構成を求め、出力する機能を備えたことを特徴とするシステム。
JP2018153737A 2018-08-17 2018-08-17 高位合成マルチプロセッサシステム等 Active JP6531927B1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2018153737A JP6531927B1 (ja) 2018-08-17 2018-08-17 高位合成マルチプロセッサシステム等
US17/269,114 US11366662B2 (en) 2018-08-17 2018-08-22 High-level synthesis multiprocessor system and the like
PCT/JP2018/030939 WO2020035957A1 (ja) 2018-08-17 2018-08-22 高位合成マルチプロセッサシステム等

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018153737A JP6531927B1 (ja) 2018-08-17 2018-08-17 高位合成マルチプロセッサシステム等

Publications (2)

Publication Number Publication Date
JP6531927B1 JP6531927B1 (ja) 2019-06-19
JP2020027591A true JP2020027591A (ja) 2020-02-20

Family

ID=66934300

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018153737A Active JP6531927B1 (ja) 2018-08-17 2018-08-17 高位合成マルチプロセッサシステム等

Country Status (3)

Country Link
US (1) US11366662B2 (ja)
JP (1) JP6531927B1 (ja)
WO (1) WO2020035957A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11221835B2 (en) 2020-02-10 2022-01-11 International Business Machines Corporation Determining when to perform and performing runtime binary slimming
US11669314B2 (en) * 2021-03-30 2023-06-06 Tata Consultancy Services Limited Method and system to enable print functionality in high-level synthesis (HLS) design platforms

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006259805A (ja) * 2005-03-15 2006-09-28 Seiko Epson Corp プロセッサ設計装置、プロセッサ設計方法およびプロセッサ設計プログラム
JP2009538481A (ja) * 2006-05-22 2009-11-05 コーヒレント・ロジックス・インコーポレーテッド 処理システムでのソフトウェアプログラムの実行に基づくasicの設計
JP2014016773A (ja) * 2012-07-09 2014-01-30 Elamina Co Ltd レジスタレスアーキテクチャによるキャッシュレスマルチプロセッサ

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1966708A2 (en) * 2005-12-20 2008-09-10 Nxp B.V. Multi-processor circuit with shared memory banks
US8122229B2 (en) * 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US8095735B2 (en) * 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US20120159127A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Security sandbox
US10761852B2 (en) * 2015-09-30 2020-09-01 International Business Machines Corporation Extending data range addressing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006259805A (ja) * 2005-03-15 2006-09-28 Seiko Epson Corp プロセッサ設計装置、プロセッサ設計方法およびプロセッサ設計プログラム
JP2009538481A (ja) * 2006-05-22 2009-11-05 コーヒレント・ロジックス・インコーポレーテッド 処理システムでのソフトウェアプログラムの実行に基づくasicの設計
JP2014016773A (ja) * 2012-07-09 2014-01-30 Elamina Co Ltd レジスタレスアーキテクチャによるキャッシュレスマルチプロセッサ

Also Published As

Publication number Publication date
US20210311732A1 (en) 2021-10-07
US11366662B2 (en) 2022-06-21
WO2020035957A1 (ja) 2020-02-20
JP6531927B1 (ja) 2019-06-19

Similar Documents

Publication Publication Date Title
CA3021447C (en) Scheduling tasks in a multi-threaded processor
US7962923B2 (en) System and method for generating a lock-free dual queue
KR101355496B1 (ko) 복수의 병렬 클러스터들을 포함하는 계층 프로세서의스케쥴링 메카니즘
KR101120398B1 (ko) 스레드 최적화된 멀티프로세서 구조
CN107810478A (zh) 具有连续块的并行执行的基于块的架构
US20080250227A1 (en) General Purpose Multiprocessor Programming Apparatus And Method
CN107810477A (zh) 解码的指令的重复使用
US9600288B1 (en) Result bypass cache
JPH10207706A (ja) ループとストライドの一方または両方の予測を行うロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法
US11893390B2 (en) Method of debugging a processor that executes vertices of an application, each vertex being assigned to a programming thread of the processor
US10606641B2 (en) Scheduling tasks in a multi-threaded processor
WO2017127180A1 (en) Random-access disjoint concurrent sparse writes to heterogeneous buffers
JP2014085839A (ja) 並列実行機構及びその動作方法
WO2020035957A1 (ja) 高位合成マルチプロセッサシステム等
US11645081B2 (en) Handling exceptions in a multi-tile processing arrangement
Kumar et al. Heterogeneous work-stealing across CPU and DSP cores
Saporito et al. Design of the IBM z15 microprocessor
JP7317218B2 (ja) 量子制御システム、量子制御処理器及び量子命令セットの実行方法
US20090063881A1 (en) Low-overhead/power-saving processor synchronization mechanism, and applications thereof
JP5967646B2 (ja) レジスタレスアーキテクチャによるキャッシュレスマルチプロセッサ
Cardosi et al. Specx: a C++ task-based runtime system for heterogeneous distributed architectures
Uddin Microgrid-The microthreaded many-core architecture
Erciyes et al. The Hardware
Ding Exploiting Hardware Abstraction for Parallel Programming Framework: Platform and Multitasking
Shahawy et al. HardCilk: Cilk-like Task Parallelism for FPGAs

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20181203

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181214

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20181214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20181203

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190125

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190507

R150 Certificate of patent or registration of utility model

Ref document number: 6531927

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250