JP5395383B2 - パイプライン演算プロセッサを備える制御システム - Google Patents

パイプライン演算プロセッサを備える制御システム Download PDF

Info

Publication number
JP5395383B2
JP5395383B2 JP2008213351A JP2008213351A JP5395383B2 JP 5395383 B2 JP5395383 B2 JP 5395383B2 JP 2008213351 A JP2008213351 A JP 2008213351A JP 2008213351 A JP2008213351 A JP 2008213351A JP 5395383 B2 JP5395383 B2 JP 5395383B2
Authority
JP
Japan
Prior art keywords
instruction
unit
pipeline
control information
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008213351A
Other languages
English (en)
Other versions
JP2010049500A (ja
Inventor
基彦 岡部
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008213351A priority Critical patent/JP5395383B2/ja
Priority to TW098118219A priority patent/TWI408601B/zh
Priority to US12/478,227 priority patent/US8200950B2/en
Priority to KR1020090049577A priority patent/KR101092955B1/ko
Priority to CN2009101426621A priority patent/CN101655784B/zh
Priority to DE102009024012A priority patent/DE102009024012A1/de
Publication of JP2010049500A publication Critical patent/JP2010049500A/ja
Application granted granted Critical
Publication of JP5395383B2 publication Critical patent/JP5395383B2/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • 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
    • 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/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、パイプライン処理機能を備えるパイプライン演算プロセッサと、このパイプライン演算プロセッサが実行するプログラム及び演算データを記憶する共有メモリを備える制御システムにおいて、特に、当該共有メモリを共有する他のプロセッサが共有メモリにアクセスした場合のパイプライン処理演算プロセッサの処理効率の低下を軽減したパイプライン処理演算プロセッサ、及びパイプライン演算プロセッサを備える制御システムに関する。
近年、制御システムなどの高速処理の要求に対応するために、演算プロセッサは、パイプライン処理機能を備えたパイプライン演算プロセッサが採用されるようになった。
従来、プラントなどの制御システムにおいては図11に示すような構成の制御システムがある。この制御システムは、プロセスセンサやアクチュエータなどの外部入出力装置からのデータを高速で処理するパイプライン演算プロセッサ12と、このパイプライン演算プロセッサ12を管理する、または、異なる処理を実行する複数の汎用プロセッサ11a、及び汎用プロセッサ11bと、外部入出力装置の入出力データをインタフェースする外部入出力メモリ13と、パイプライン演算プロセッサ12と汎用プロセッサ11a、11bとが共有し、パイプライン演算プロセッサ12が実行する制御プログラム14aを記憶する演算実行メモリ14とから構成される。
さらに、パイプライン処理部12は、命令フェッチ部12b1と、命令デコード部12b2と、命令実行・実行アドレス生成部12b3と、メモリアクセス部12b4、12b5と、及びライトバック12と、とこれらの各部間のデータパスを制御する図示しない予め設定されるバイパス制御回路と、外部入出力メモリアクセス部12b8と、演算実行メモリアクセス部12b9と、これらを接続するパイプラインバス12b7とから構成される。
ところで、パイプライン処理部12bは、1つの命令の処理を命令フェッチ部(IF)12b1、命令のデコード部(ID)12b2、命令の実行部(MAR)12b3、メモリアクセス部(MADR、MDR)12b4、12b5、及びライトバック(WR)12の5つの基本ステージに分割して複数の命令を並列実行することで処理のスループットを向上させるものであるが、予定したステージの動作を途中で変更する状態が発生すると、途中となったパイプラインのステージの実行を一旦停止(ストールと言う)したり、最初に戻ってやり直したり、また、命令の順序変えなどが必要となる。
このような要因の1つにロード命令に起因するデータハザードがあるが、このデータハザードによるパイプラインストールを回避するため、ロード命令のアドレスを予測する方法が開示されている(例えば、特許文献1参照。)。
また、パイプライン処理の原理や、パイプライン処理実行における各種のハザードを解決する技術が開示されている(例えば、非特許文献1。)。
特許第3435267号公報 ジョン・L・ヘネシー、デイビッド・A・パターソン著「コンピュータの構成と設計(下巻)、日経BP社、1996年6月26日、第6章
図11に示す従来のパイプライン演算プロセッサを用いたプラントなどの制御システムにおいて、通常のパイプライン処理動作は、図12(a)に示すようになる。
例えば、命令Aから命令Fは、図12(a)に示すように夫々のステージでの処理がクロック信号に同期して、1命令が6ステージで処理され、夫々の命令は、1ずれて並列に実行される。
従来、このような処理が実行されている場合、汎用プロセッサ11aからメモリアクセス部12aを介して、共有メモリに対して、例えば、命令Bがメモリライト部WRのステージの処理中にアクセスがあると、図11(b)に示すようにメモリアクセス部12aは、パイプライン処理部12bの全ステージの処理動作を停止する信号を送信し、演算実行メモリアクセス部12b9を介して、この停止期間を利用して演算実行メモリ14にアクセスするようにしている。
この場合、命令Bから命令Fについては、実行中の命令のメモリサイクル処理が停止期間の前後で分断されるため、各ステージ間の動作と同期メモリとの処理動作の位相がずれる、破線で囲んだステージの処理は、正常に実行されない。
そのため、命令Bから命令Fは、パイプライン処理の停止が解除された後に、実線で示すように再度実行することが必要となるので、パイプラン処理部12での処理効率が大きく低下する問題がある。
即ち、従来のパイプライン演算プロセッサを用いた処理では、予定した動作を途中で変更する状態が発生すると、途中まで進んだパイプラインのステージを一旦最初に戻ってやり直すペナルティが発生するために性能が悪化する問題がある。
本発明は上述した問題点を解決するためになされたもので、演算実行メモリを共有するパイプライン演算プロセッサを備える制御システムにおいて、パイプライン演算プロセッサが制御プログラムを実行中に共有メモリにアクセス要求があった場合、パイプライン処理の複数命令間のデータパスの同期ずれから生じるハザードの発生を防止してパイプライン処理を継続させて、パイプライン演算プロセッサの処理効率の低下を軽減し、制御プログラムの高速演算処理を可能とするパイプライン演算プロセッサ、及びパイプライン演算プロセッサを備える制御システムを提供することを目的とする。
上記目的を達成するために、本発明によるパイプライン演算プロセッサを備える制御システムは、1つ以上の汎用プロセッサと、当該汎用プロセッサのバスに接続されたパイプライン処理機能を備えるパイプライン演算プロセッサと、前記パイプライン演算プロセッサが実行する制御プログラム及び演算データを記憶するとともに、前記汎用プロセッサが当該パイプライン演算プロセッサを介してアクセスする演算実行メモリと、前記パイプライン演算プロセッサがアクセスして入出力する外部データをインタフェースする外部入出力メモリと、を備える制御システムであって、前記パイプライン演算プロセッサは、パイプライン処理部と、前記汎用プロセッサから前記演算実行メモリへのアクセス要求があった場合、複数のステージから成る当該パイプライン処理部への命令の挿入と、複数の前記ステージ間のデータパスとを制御する各ステージの制御情報の相対的な位置ずれを補正して再設定する命令挿入制御部とから成り、前記パイプライン処理部は、1つの命令を分割して並行処理する、命令フェッチ部と、命令デコード部と、命令実行/実行アドレス生成部と、メモリアドレスアクセス部及びメモリデータアクセス部と、書き込み部とから成る複数の前記ステージと、複数の前記ステージを接続するパイプラインバスと、を備え、さらに、前記パイプラインバスに接続され、前記外部入出力メモリとのアクセスをインタフェースする外部入出力メモリアクセス部及び前記演算実行メモリとのアクセスをインタフェースする演算実行メモリアクセス部とを備え、前記命令挿入制御部は、前記汎用プロセッサから前記演算実行メモリへのアクセス要求命令を受信した場合に、前記命令デコード部にNOP命令を挿入する命令アクセス部と、前記命令挿入部から前記NOP命令の挿入を通知された場合、または、前記命令挿入部を介して、前記制御プログラムに予め組み込まれたNOP命令を前記命令デコード部から通知された場合、当該NOP命令を挿入時の前記パイプライン処理部の各ステージの制御情報を記憶するとともに、当該NOP命令の次の命令実行時の各ステージ間の制御情報との相対的な位置ズレを補正して出力する補正制御情報バッファ部と、前記NOP命令が発生した場合に、前記パイプライン処理部の前記制御情報を前記補正制御情報バッファ部の出力に切替えて再設定するマルチプレクサとを備え、前記命令挿入制御部は、前記命令フェッチ部が前記演算実行メモリから前記命令をフェッチして前記制御プログラムを実行中に、前記汎用プロセッサから前記演算実行メモリにアクセスを要求するアクセス要求命令を受信した場合に、実行予定の前記制御プログラムの次命令に変えてNOP命令を前記命令デコード部から挿入し、前記パイプライン処理部の実行を無処理として、前記汎用プロセッサからの前記アクセス要求命令を前記演算実行メモリアクセス部を介して実行し、前記パイプライン処理部は、引き続き前記次命令を実行して前記パイプライン処理を継続実行させ、前記パイプライン演算プロセッサの処理を中断することなく、前記制御プログラムを実行できるようにしたことを特徴とする。
本発明によれば、算実行メモリを共有するパイプライン演算プロセッサを備える制御
システムにおいて、パイプライン演算プロセッサが制御プログラムを実行中に共有メモリ
にアクセス要求があった場合、パイプライン処理の複数命令間のデータパスの同期ずれか
ら生じるハザードの発生を防止してパイプライン処理を継続させて、パイプライン演算プ
ロセッサの処理効率の低下を軽減し、制御プログラムの高速演算処理を可能とするパイプ
ライン演算プロセッサ、及びパイプライン演算プロセッサを備える制御システムを提供す
ることができる。
以下、図面を参照して、本発明の実施例を説明する。
以下に、本発明による実施例1のパイプライン演算プロセッサを備える制御システムについて、図1乃至図6を参照して説明する。先ず、図1、図3(a)を参照して本発明の構成と通常処理動作について説明する。
パイプライン演算プロセッサを備える制御システムは、汎用プロセッサ1a、1bと、このバス1cに接続されるパイプライン演算プロセッサ2と、被制御対象プロセスの入出力装置の入出力データを記憶する外部入出力メモリ3と、パイプライン演算プロセッサ2が実行する制御プログラム4a及びその演算データを記憶する演算実行メモリ4とから構成される。
次に、各部の構成について説明する。パイプライン演算プロセッサ2は、パイプライン演算を実行するパイプライン処理部2bと、汎用プロセッサ1a、1bから演算実行メモリ4へのアクセス要求があった場合、複数のステージから成る当該パイプライン処理部2bへの命令の挿入と、複数のステージ間のデータパスとを制御する各ステージの制御情報を参照して制御情報の位置ずれ補正とを行う命令挿入制御部2aとからなる。
次に、命令挿入制御部2aは、汎用プロセッサ1a、1bから演算実行メモリ4へのアクセス要求を制御するメモリアクセス部2a1と、汎用プロセッサ1a、または、汎用プロセッサ1bから演算実行メモリ4へのアクセス要求命令を受信した場合に、後述する命令デコード部2b2にNOP命令を挿入する命令挿入部2a2とを備える。
さらに、命令挿入部2a2からNOP命令の挿入を通知された場合、または、命令挿入部2a2を介して、前記制御プログラムに予め組み込まれたNOP命令を前記命令デコード部から通知された場合、当該NOP命令を挿入時のパイプライン処理部2bの各ステージの制御情報を記憶するとともに、当該NOP命令の次の命令実行時の各ステージ間の制御情報との相対的な位置ズレを補正して出力する補正制御情報バッファ部2a3と、NOP命令が発生した場合にパイプライン処理部2bの制御情報を補正制御情報バッファ部2a3の出力に切替えて再設定するマルチプレクサ2a4とを備える。
また、パイプライン処理部2bは、1つの命令を分割して並行処理する、命令フェッチ部2b1と、命令デコード部2b2と、命令実行・実行アドレス生成部2b3と、メモリアドレスアクセス部2b4と、メモリデータアクセス部2b5と、書き込み部2b6とから成るパイプライン処理のステージ部と、外部入出力メモリ3とのアクセスを制御する外部入出力アクセス部2b8と、演算実行メモリ4とのアクセスを制御する演算実行メモリアクセス部2b9と、これら各部を接続するパイプラインバス2b7とから成る。
さらに、図示しない、パイプライン処理のステージ部相互間のデータパスをバイパス制御する、予め設定される制御情報設定部、及びその制御線とから成る。
本実施例では、パイプライン処理部2bは、命令フェッチ部2b1乃至書き込み部2b6までの6ステージ場合について説明するが、このパイプライン処理の構成は、5ステージ、8ステージの構成とすることも可能で、パイプライン処理機能を備えたものであれば良く、ステージ数は6ステージに限定されない。
また、外部入出力メモリ3は、パイプライン演算プロセッサ2が実行する入出力データをインタフェースし、出力データの書き込みは、メモリアドレスアクセス部2b4からパイプラインバス2b7を介して外部入出力メモリアクセス部2b8に、さらに、外部入出力メモリアクセス部2b8から外部入出力メモリ3へ、予め設定されるパイプラインバス2b7の基本バスサイクルで実行される。
入力データの読み出しは、逆に、外部入出力メモリ3から外部入出力メモリアクセス部2b8へ、さらに、外部入出力メモリアクセス部2b8からパイプラインバス2b7を介して、メモリデータアクセス部2b5に読み出しされる。
次に、演算実行メモリ4は、同期メモリで構成し、データの書き込みは、メモリアドレスアクセス部2b4から、演算実行メモリアクセス部2b9へ、さらに、演算実行メモリアクセス部2b9を介して演算実行メモリ4に書き込まれる。
また、データの読み出しは、逆に、演算実行メモリ4から演算実行メモリアクセス部2b9を介して、メモリデータアクセス部2b5に読み出され、夫々パイプラインバス2b7のクロック信号に同期して実行される。
次に、このように構成された制御システムについて、通常のパイプライン処理が実行されている場合の通常の制御動作について説明する。図1矢印破線に示すように、パイプライン演算プロセッサ2が実行する制御プログラム4aは、命令フェッチ部2b1からパイプラインバス2b7を介して要求し、演算実行メモリアクセス部2b9から演算実行メモリ4にアクセスし、実行する命令が命令デコード部2b2に読み出される。
図3(a)に示す記号IF〜記号WRは、夫々命令のフェッチ部2b1〜書き込み部2b6の各部に対応する処理ステージを記号で示したもので、例えば、読み出された命令A〜命令Fは、1つの命令毎に1ステージ遅れで、各命令に対してIF〜WRまでの6ステージの処理を並列処理していることを示す。
次に、図2及び、図3(b)、(c)を参照して、パイプライン演算プロセッサ2が通常の制御動作を実行中に、汎用プロセッサ1a、または汎用プロセッサ1bから演算実行メモリ4に対してアクセス要求があった場合の動作について説明する。
図2の破線に示すように、命令挿入部2a2は、汎用プロセッサ1aからメモリアクセス部2a1を介して、演算実行メモリ4へのアクセス要求があった場合、図3(b)に示す実行予定であった命令Eに替えて、NOP命令をIDデコード部2b2から挿入し、この時の各ステージを無処理とする。
また、命令挿入部2a2は、演算実行メモリ4に対する要求データは演算実行メモリアクセス部2b9を介して、このNOP命令の期間を使用して書き込みまたは読み出しする。
図3(b)の下段は、汎用プロセッサ1aから演算実行メモリ4へのアクセス要求があった場合、命令Dと命令Eとの間に1つのNOP命令を挿入した場合のパイプライン演算プロセッサの動作を示し、また、図3(b)の上段は、全ステージの処理動作を停止する従来動作を示し、両者の動作を対比して図示している。
図に示すように、NOP命令1つでパイプライン動作を継続する場合、従来の全ステージの処理を停止する場合に比べて、実行中であった全停止期間の命令Bから命令Fの処理を再実行する必要がなく、NOP命令が挿入された期間の1ステージの遅れに限定されるので、パイプライン処理の連続性を確保して、共有するメモリへのアクセス要求による処理効率の低下を軽減することが出来る。
尚、演算実行メモリ4へのアクセスは、パイプライン演算プロセッサ2自身が、予め制御プログラムに組み込んでアクセスする場合もある。この場合には、命令挿入部2a2からNOP命令の挿入を通知された場合、制御プログラムに予め組み込まれたNOP命令を命令デコード部2b2で検知して、命令挿入部2a2に通知し、命令挿入部2a2はこの命令が発生したことを補正制御情報バッファ部2a3に通知する。
この、NOP命令の通知された後の補正制御情報バッファ部2a3の動作は、汎用プロセッサ1aから演算実行メモリ4にアクセス要求があった場合と同様の動作を実行する。
次に、図2、及び図4乃至図6を参照して、命令挿入制御部2aの詳細構成とその動作について説明する。
命令挿入部2a2は、実行予定であった命令Eに替えて、NOP命令をIDデコード部2b2から挿入すると、図5(a)に示すように、NOP命令挿入前の命令のステージと挿入後の命令のステージ間の相対的な位置が変化、即ち、ステージ間の命令の依存関係を制御している制御情報の位相関係が変化する。
そのため、命令を挿入した場合このステージ間のデータパスを制御する制御情報の位相の補正が必要になる。補正制御情報バッファ部2a3は、この制御情報の位相ずれを補正するもので、図4を参照してその詳細を説明する。
補正制御情報バッファ部2a3は、命令挿入部2a2から命令デコード部2b2にNOP命令の挿入毎に制御情報の記憶先のバンクを選択する制御情報記憶バンク選択部2a31と、制御情報を記憶する複数のバッファレジスタから成るバンクを備える制御情報記憶部2a32と、バンクに記憶された制御情報を、NOP命令挿入による各ステージ間の制御情報の相対的な位置ずれを次命令実行時に補正して、対応する夫々のバンクから選択して出力する補正制御情報選択部2a33とを備える。
また、制御情報記憶バンク選択部2a31は、命令挿入部2a2からの命令の有無を記憶し、パイプラインのクロック信号Ckに同期して回転するとともに、命令挿入部2a2から出力がある期間は停止し、ハイレベルを真として出力する3つのバッファを備える入力選択リングバッファ2a311と、入力リングバッファ2a311が真の時、パイプライン処理部2bの各ステージの制御情報を入力して、真となったいずれかのリングバッファの出力を対応するバンクに送出するゲート回路2a312とから成る。
補正制御情報選択部2a33は、制御情報記憶部2a32の夫々のバンクに記憶された制御情報を、入力された命令の数、即ち、停止したステージ数の期間遅延して次のステージで出力するように制御する出力選択リングバッファ2a331と、制御情報記憶部2a32の夫々の3つのバンク(L、M、N)のいずれかに記憶した制御情報を入力し、この出力選択リングバッファ2a331の出力で選択された制御情報を出力するマルチプレクサ2a332とから構成される。
即ち、入力選択リングバッファ2a311、出力選択リングバッファ2a331のバッファ数、及び制御情報記憶部2a32のバンク数は、共有する演算実行メモリ4にアクセスするプロセッサの数と、パイプラインの1命令のステージ処理の間にアクセスする回数とから、予めそれらの数が決定されるが、このような同期式の一次記憶部を構成とすることで、パイプライン処理のクロック信号に同期して高速で制御情報の補正することが可能となる。
次に、このように構成された補正制御情報バッファ部2a3の制御動作について説明する。
例えば、図5(b)に示すように、メモリデータアクセス部(MDR)2b5のステージの動作結果を命令デコード部2b2(ID)ステージで使用する場合、通常のパイプライン処理動作では、命令Aのメモリデータアクセス部(MDR)2b5の制御情報を命令デコード部2b2(ID)ステージで参照することで動作可能であるが、演算実行メモリ4にアクセス要求が発生した場合、MDRステージ(st1)の制御情報をそのまま、命令挿入後のIDステージ(st3)で参照すると、本来の制御情報は次に実行された命令で更新されているのでハザードが発生し使用できない。
そこで、補正制御情報バッファ部2a3によって、一旦保存して本来の制御情報をIDステージで参照可能となるようにする。
即ち、補正制御情報バッファ部2a3は、パイプライン処理動作の連続ステージの夫々の制御情報を順次保存し、参照可能とするために、上述したように、制御情報の入力に対して並列構造をとるバンクを備える制御情報記憶部2a32で構成し、並列なバンクの選択および選択条件がパイプライン処理のクロック信号Ckに同期して巡回することで、制御情報の入力条件および出力条件を選択制御する制御情報バンク制御部2a31及び補正制御情報選択部2a33を備えて、命令挿入時の制御情報の位相ずれを同期して補正し、補正された制御情報をパイプライン各ステージで参照するようにすることで、複数命令のアクセス要求が発生した状態でも正常に制御情報の参照が可能にしている。
例えば、図6に示すように、命令BをCMPとニーモニック表示される比較命令とし、命令FをJMPと表示される条件分岐命令とするとき、命令Bの結果の制御情報を命令Fで反映するステージに対して、命令Dと命令Eの間に命令の1つのNOP命令挿入が、さらに、命令Eと命令Fとの間に3つのNOP命令が連続して挿入された場合、ステージMDRに対応するステージIDの制御情報は、実線矢印に示すように、夫々、ステージst3、ステージst6〜st9のステージにおいて、NOP命令が挿入されない状態での本来の対応する位相の制御情報を設定して、正常に動作する。
以下に、本発明の実施例2に係るパイプライン演算プロセッサを備える制御システムについて、図7及び図8を参照して説明する。
パイプライン演算プロセッサを備える制御システムの各部について、実施例1のパイプライン演算プロセッサ2を備える制御システムの各部と同一部分は同一符号で示し、その説明を省略する。
この実施例2は、1命令に対して演算実行メモリ4へのメモリアクセスを1回行うことを規則化してパイプライン処理を単純化する場合の実施例である。
一般に、メモリマップ上のあるアドレスをアクセスする場合、特に、固定長のプロセッサではバイトの偶数整数倍にあたるアライメントに従い、32ビットデータでは4バイトアライメント、16ビットデータでは2バイトアライメントに従い、アライメントに従わない場合はアライメントエラーとする場合がある。
この場合、図7に示すように、1回のメモリアクセスでデータの書き込み/読み出しが可能な4バイトのアライメントデータに対しても、メモリアクセスが2回必要なアライメントエラーとなるデータに対しては、同じ命令挿入と制御情報とを保存して1命令に対して複数回のメモリアクセスを可能にし、複数回のメモリアクセスでの制御情報のハザードが発生することなく、正常なパイプラン処理を可能とする必要がある。
そこで、図8に示すように、命令デコード部2b2にて、ID回路2b12が抽出した演算実行用メモリ4に対してアクセスを行う命令とそのメモリアドレス、及びそのデータサイズを、アライメント検出回路2b13でアライメントエラーを検出し、この検出信号を命令挿入部2a2に送信することで、命令挿入制御部2aによって、実施例1で説明したと同様に、パイプライン演算プロセッサ2は、当該1命令のメモリアクセスに対して、2回のメモリアクセスを正しく実行することができる。
したがってアライメントエラーとなるデータに対してのメモリアクセスを制御プログラムのコンパイルで回避することなくパイプライン演算プロセッサで実行が可能となり、固定長命令実行のパイプライン演算プロセッサで可変長のデータに対しても実効が可能になるので、パイプライン演算プロセッサの処理が早くなる。
以下に、本発明の実施例3に係るパイプライン演算プロセッサを備える制御システムについて、図8乃至図10を参照して説明する。
パイプライン演算プロセッサを備える制御システムの各部について、実施例1のパイプライン演算プロセッサ2を備える制御システムの各部と同一部分は同一符号で示し、その説明を省略する。
本実施例3では、パイプライン演算プロセッサ2から外部入出力メモリ3に対して、1命令で複数命令のアクセスを可能とし、処理効率を向上させる場合がある。
この場合、図8に示すID回路2b12にセットされるパイプライン演算プロセッサ2の外部入出力用メモリ3へのアクセスを行う命令を検出する複数回アクセス命令検出回路2b14備え、複数回アクセス命令検出回路2b14は、このアクセス要求の命令を検出すると命令挿入部2a2に通知し、命令挿入部2a2からID回路に同じ命令の実行が通知され、外部入出力用メモリアクセス部2b8を介して、メモリアクセスの完了までの複数回の命令挿入数に相当するメモリアクセスを実行する。
例えば、図9に示すように、命令DをMEM・WRとニーモニック表示されるライトアクセス命令とし、命令Dの実行からメモリアクセス完了まで複数回の命令を挿入する。
この場合、命令Dの直前の、命令A〜命令Cの命令実行結果によるライトデータをMADRステージにバイパスする場合に備えて、命令Dの実行に続き、メモリアクセス完了までの命令挿入の順とすることで、ステージ間のライトデータのバイパスに対しても、データハザードの発生をさせることなく演算実行メモリ4へのメモリアクセスを可能にする。
また、図10に示すように、命令DをMEM・RDとニーモニック表示されるリードアクセス命令とし、命令Cの実行の次に命令Dの実行開始時から命令を挿入し、メモリアクセス完了は命令DをMEM・RDとする。
この場合、命令Dの直後の命令E〜命令Hの命令実行にリードデータをMDRステージからバイパスする場合に備えて、命令Dの実行開始から、メモリアクセス完了直前まで複数回の命令を挿入し、続いて命令Dの順とすることで、ステージ間のリードデータのバイパスに対してもデータハザード発生無しにしてメモリアクセスを可能にする。
本実施例3によれば、パイプライン演算プロセッサのパイプライン制御に対しての影響を最小限にして汎用プロセッサからのメモリアクセスが可能となり、パイプライン演算プロセッサの演算性能の向上が可能になる。
本発明は、上述した実施例に何ら限定されるものではなく、命令挿入制御部は、共有する演算実行メモリに対して、NOP命令を挿入するとともに、この時に発生する制御情報のずれ(ハザードの発生)を補正するものであれば良く、パイプライン処理部のステージの構成と演算実行メモリの回路構成とによって、本発明の主旨を逸脱しない範囲で種々変形して実施することができる。
本発明のパイプライン演算プロセッサを備える制御システムの構成図。 本発明のパイプライン演算プロセッサの構成図。 本発明の演算実行メモリ(共有メモリ)にアクセスが合った場合のパイプラインの動作を説明する図。 本発明の補正制御情報バッファ部の構成図。 本発明の補正制御情報バッファ部のパイプラインの制御動作の説明図。 本発明の本発明の補正制御情報バッファ部のパイプラインの制御動作の説明図。 アライメントエラーの説明図。 アライメントエラーの検出と命令挿入制御部の動作の説明図 1命令で複数回の命令を実行する場合の検出と命令挿入制御部の動作の説明図。 1命令で複数回の命令を実行する場合の検出と命令挿入制御部の動作の説明図。 従来のパイプライン演算プロセッサを備える制御システムの構成図。 従来のパイプライン演算プロセッサを備える制御システムの共有メモリへのアクセス動作の説明図。
符号の説明
1a、1b 汎用プロセッサ
1c バス
2 パイプライン演算プロセッサ
2a 命令挿入制御部
2a1 メモリアクセス部
2a2 命令挿入部
2a3 補正制御情報バッファ部
2a31 制御情報記憶バンク選択部
2a311 入力選択リングバッファ
2a312 ゲート回路
2a32 制御情報記憶部
2a33 補正制御情報選択部
2a331 出力選択リングバッファ
2a332 マルチプレクサ
2a4 マルチプレクサ
2b パイプライン処理部
2b1 命令フェッチ部
2b2 命令デコード部
2b3 命令実行・実行アドレス生成部
2b4 メモリアドレスアクセス部
2b5 メモリデータアクセス部
2b6 書き込み部
2b7 パイプラインバス
2b8 外部入出力メモリアクセス部
2b9 演算実行メモリアクセス部
2b12 ID回路
2b13 アライメント検出回路
2b14 複数回アクセス命令検出回路
3 外部入出力メモリ
4 演算実行メモリ
4a 制御プログラム
11a、11b 汎用プロセッサ
11c バス
12 パイプライン演算プロセッサ
12a メモリアクセス部
12b パイプライン処理部
12b1 命令フェッチ部
12b2 命令デコード部
12b3 命令実行・実行アドレス生成部
12b4 メモリアドレスアクセス部
12b5 メモリデータアクセス部
12b6 書き込み部
12b7 パイプラインバス
12b8 外部入出力メモリアクセス部
12b9 演算実行メモリアクセス部
13 外部入出力用メモリ
14 演算実行メモリ
14a 制御プログラム

Claims (4)

  1. 1つ以上の汎用プロセッサと、
    当該汎用プロセッサのバスに接続されたパイプライン処理機能を備えるパイプライン演算プロセッサと、
    前記パイプライン演算プロセッサが実行する制御プログラム及び演算データを記憶するとともに、前記汎用プロセッサが当該パイプライン演算プロセッサを介してアクセスする演算実行メモリと、
    前記パイプライン演算プロセッサがアクセスして入出力する外部データをインタフェースする外部入出力メモリと、
    を備える制御システムであって、
    前記パイプライン演算プロセッサは、パイプライン処理部と、前記汎用プロセッサから前記演算実行メモリへのアクセス要求があった場合、複数のステージから成る当該パイプライン処理部への命令の挿入と、複数の前記ステージ間のデータパスとを制御する各ステージの制御情報の相対的な位置ずれを補正して再設定する命令挿入制御部とから成り、
    前記パイプライン処理部は、1つの命令を分割して並行処理する、命令フェッチ部と、命令デコード部と、命令実行/実行アドレス生成部と、メモリアドレスアクセス部及びメモリデータアクセス部と、書き込み部とから成る複数の前記ステージと、複数の前記ステージを接続するパイプラインバスと、を備え、さらに、前記パイプラインバスに接続され、前記外部入出力メモリとのアクセスをインタフェースする外部入出力メモリアクセス部及び前記演算実行メモリとのアクセスをインタフェースする演算実行メモリアクセス部と、
    を備え、
    前記命令挿入制御部は、前記汎用プロセッサから前記演算実行メモリへのアクセス要求命令を受信し、前記命令デコード部にNOP命令を挿入するメモリアクセス部及び命令挿入部と、前記命令挿入部から前記NOP命令の挿入を通知された場合、または、前記命令挿入部を介して、前記制御プログラムに予め組み込まれたNOP命令を前記命令デコード部から通知された場合、当該NOP命令を挿入時の前記パイプライン処理部の各ステージの制御情報を記憶するとともに、当該NOP命令の次の命令実行時の各ステージ間の制御情報との相対的な位置ズレを補正して出力する補正制御情報バッファ部と、前記NOP命令が発生した場合に、前記パイプライン処理部の前記制御情報を前記補正制御情報バッファ部の出力に切替えて再設定するマルチプレクサと、
    を備え、
    前記命令挿入制御部は、前記命令フェッチ部が前記演算実行メモリから前記命令をフェッチして前記制御プログラムを実行中に、前記汎用プロセッサから前記演算実行メモリにアクセスを要求するアクセス要求命令を受信した場合に、実行予定の前記制御プログラムの次命令に変えてNOP命令を前記命令デコード部から挿入し、前記パイプライン処理部の実行を無処理として、前記汎用プロセッサからの前記アクセス要求命令を、前記演算実行メモリアクセス部を介して実行し、
    前記パイプライン処理部は、引き続き前記次命令を実行して前記パイプライン処理を継続実行させ、
    前記パイプライン演算プロセッサの処理を中断することなく、前記制御プログラムを実行できるようにしたことを特徴とするパイプライン演算プロセッサを備える制御システム。
  2. 前記補正制御情報バッファ部は、前記NOP命令の挿入毎に前記制御情報の記憶先のバンクを選択する制御情報記憶バンク選択部と、
    前記制御情報を記憶する複数の前記バンクを備える制御情報記憶部と、
    前記バンクに記憶された制御情報を、前記NOP命令挿入による各ステージ間の制御情報の相対的な位置ズレを補正して次命令実行時に再設定して、対応する夫々の前記バンクから選択して出力する補正制御情報選択部と、
    前記補正制御情報選択部の出力と、前記NOP命令挿入前の前記制御情報とのいずれかを選択するマルチプレクサと、
    を備えた請求項1に記載のパイプライン演算プロセッサを備える制御システム。
  3. さらに、前記命令デコード部は、フェッチした命令の命令コードとそのアドレスを記憶するにID回路と、
    前記ID回路に記憶された前記命令コードと前記アドレスとからアライメントエラーのエラーの有無を検出するアライメントエラー検出回路とを備え、
    前記アライメントエラー検出回路がアライメントエラーを検出した場合、前記エラーの有無を前記命令挿入部に通知し、
    前記命令挿入部は、前記エラーの有の場合、当該エラーに対応する前記命令コードの挿入を前記ID回路に通知して、
    さらに、当該エラーに対応する同じ前記ステージの制御情報を前記補正制御情報バッファ部に保持して、可変長データに対してもパイプライン処理が実行できるようにしたことを特徴とする請求項1に記載のパイプライン演算プロセッサを備える制御システム。
  4. さらに、前記命令デコード部は、フェッチした命令の命令コードを記憶するID回路と、
    前記ID回路に記憶された前記命令コードから前記外部入出力メモリへの複数回アクセス要求命令を検出する複数回アクセス命令検出回路を備え、
    前記複数回アクセス命令検出回路が複数回アクセス要求命令を検出した場合、その回数を前記命令挿入部に通知し、
    前記命令挿入部は、前記回数に対応する前記命令コードの挿入を前記ID回路に通知して、前記外部入出力メモリへのアクセスを1つの命令で複数回実行できるようにしたことを特徴とする請求項1に記載のパイプライン演算プロセッサを備える制御システム。
JP2008213351A 2008-08-21 2008-08-21 パイプライン演算プロセッサを備える制御システム Active JP5395383B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2008213351A JP5395383B2 (ja) 2008-08-21 2008-08-21 パイプライン演算プロセッサを備える制御システム
TW098118219A TWI408601B (zh) 2008-08-21 2009-06-02 管線操作處理器及控制系統
US12/478,227 US8200950B2 (en) 2008-08-21 2009-06-04 Sharing pipeline by inserting NOP to accommodate memory access request received from other processors
KR1020090049577A KR101092955B1 (ko) 2008-08-21 2009-06-04 파이프라인 동작 프로세서 및 제어 시스템
CN2009101426621A CN101655784B (zh) 2008-08-21 2009-06-05 流水线操作处理器和控制系统
DE102009024012A DE102009024012A1 (de) 2008-08-21 2009-06-05 Pipeline-Betriebsprozessor und Steuersystem

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008213351A JP5395383B2 (ja) 2008-08-21 2008-08-21 パイプライン演算プロセッサを備える制御システム

Publications (2)

Publication Number Publication Date
JP2010049500A JP2010049500A (ja) 2010-03-04
JP5395383B2 true JP5395383B2 (ja) 2014-01-22

Family

ID=41566931

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008213351A Active JP5395383B2 (ja) 2008-08-21 2008-08-21 パイプライン演算プロセッサを備える制御システム

Country Status (6)

Country Link
US (1) US8200950B2 (ja)
JP (1) JP5395383B2 (ja)
KR (1) KR101092955B1 (ja)
CN (1) CN101655784B (ja)
DE (1) DE102009024012A1 (ja)
TW (1) TWI408601B (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101826052B (zh) * 2010-05-04 2012-07-04 中国人民解放军国防科学技术大学 Nual执行语义微处理器中保持延时一致性的断点实现方法
CN101866281B (zh) * 2010-06-13 2013-05-22 清华大学 一种多周期指令执行方法和装置
US8522076B2 (en) * 2010-06-23 2013-08-27 International Business Machines Corporation Error detection and recovery in a shared pipeline
US9529596B2 (en) * 2011-07-01 2016-12-27 Intel Corporation Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits
US8635501B2 (en) 2011-07-25 2014-01-21 Microsoft Corporation Detecting memory hazards in parallel computing
CN102830953B (zh) * 2012-08-02 2017-08-25 中兴通讯股份有限公司 指令处理方法及网络处理器指令处理装置
US9268597B2 (en) * 2014-04-01 2016-02-23 Google Inc. Incremental parallel processing of data
WO2019021344A1 (ja) * 2017-07-24 2019-01-31 オリンパス株式会社 画像処理装置および撮像装置
CN111857831B (zh) * 2020-06-11 2021-07-20 成都海光微电子技术有限公司 一种存储体冲突优化方法、并行处理器及电子设备
CN111930426A (zh) * 2020-08-14 2020-11-13 西安邮电大学 一种可重构计算的双模指令集架构及其应用方法
KR20240063179A (ko) * 2021-09-26 2024-05-13 세레모픽 인코포레이티드 제어 플로우 공격 검출 기능을 구비한 코어 프로세서 및 용장 브랜치 프로세서
US11921843B2 (en) 2021-09-26 2024-03-05 Ceremorphic, Inc. Multi-threaded secure processor with control flow attack detection

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05100844A (ja) * 1991-10-08 1993-04-23 Nec Corp マイクロ・プロセツサのプログラムウエイト制御回路
JPH06161778A (ja) * 1992-11-26 1994-06-10 Fujitsu Ltd マルチフロー命令制御方法及び命令処理装置
JP3435267B2 (ja) 1995-11-07 2003-08-11 株式会社東芝 マイクロプロセッサ及びそのロードアドレス予想方法
US5860000A (en) * 1996-01-31 1999-01-12 Hitachi Micro Systems, Inc. Floating point unit pipeline synchronized with processor pipeline
JP3014682B2 (ja) * 1997-11-21 2000-02-28 松下電器産業株式会社 プログラム制御方法及び装置
US6112297A (en) * 1998-02-10 2000-08-29 International Business Machines Corporation Apparatus and method for processing misaligned load instructions in a processor supporting out of order execution
JP2000298652A (ja) * 1999-04-14 2000-10-24 Mitsubishi Electric Corp マルチプロセッサ
AU4848700A (en) * 1999-05-13 2000-12-05 Arc International U.S. Holdings Inc. Method and apparatus for processor pipeline segmentation and re-assembly
EP1290548A2 (en) 2000-06-02 2003-03-12 Sun Microsystems, Inc. Synchronizing partially pipelined instructions in vliw processors
US7248585B2 (en) * 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
US6877077B2 (en) * 2001-12-07 2005-04-05 Sun Microsystems, Inc. Memory controller and method using read and write queues and an ordering queue for dispatching read and write memory requests out of order to reduce memory latency
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
JP4412905B2 (ja) * 2003-01-28 2010-02-10 パナソニック株式会社 低電力動作制御装置、およびプログラム最適化装置
US7373536B2 (en) 2004-08-04 2008-05-13 Kabushiki Kaisha Toshiba Fine granularity halt instruction
US7278014B2 (en) * 2004-12-02 2007-10-02 International Business Machines Corporation System and method for simulating hardware interrupts
US7437537B2 (en) * 2005-02-17 2008-10-14 Qualcomm Incorporated Methods and apparatus for predicting unaligned memory access
US7814487B2 (en) 2005-04-26 2010-10-12 Qualcomm Incorporated System and method of executing program threads in a multi-threaded processor

Also Published As

Publication number Publication date
TWI408601B (zh) 2013-09-11
TW201011644A (en) 2010-03-16
KR20100023731A (ko) 2010-03-04
US8200950B2 (en) 2012-06-12
US20100050026A1 (en) 2010-02-25
DE102009024012A1 (de) 2010-02-25
CN101655784B (zh) 2013-03-06
JP2010049500A (ja) 2010-03-04
CN101655784A (zh) 2010-02-24
KR101092955B1 (ko) 2011-12-12

Similar Documents

Publication Publication Date Title
JP5395383B2 (ja) パイプライン演算プロセッサを備える制御システム
US10365979B2 (en) Lockstepped CPU selection based on failure status
JP5209933B2 (ja) データ処理装置
JP2008299795A (ja) 分岐予測制御装置及びその方法
JP2000330789A (ja) コンピュータシステムおよびその命令実行方法
JP2006164277A (ja) プロセッサにおけるエラー除去装置および方法,プロセッサ
US6131158A (en) Data processing system capable of executing groups of instructions, including at least one arithmetic instruction, in parallel
KR100291602B1 (ko) 인터럽트제어장치,프로세서및계산기시스템
US20100332800A1 (en) Instruction control device, instruction control method, and processor
JP2012198803A (ja) 演算処理装置及び演算処理方法
US7716537B2 (en) Information processing apparatus and error correction method
US11269650B2 (en) Pipeline protection for CPUs with save and restore of intermediate results
JP3839755B2 (ja) 命令制御方法及びプロセッサ
US9417882B2 (en) Load synchronization with streaming thread cohorts
US20080222392A1 (en) Method and arrangements for pipeline processing of instructions
JPH06131180A (ja) 命令処理方式および命令処理装置
JP3971780B2 (ja) 命令制御方法
JP3476314B2 (ja) マイクロプロセッサ
JP3798180B2 (ja) プロセッサにおいて命令をバッファリングする方法およびシステム
JP3933679B2 (ja) 命令処理装置
US20080222393A1 (en) Method and arrangements for pipeline processing of instructions
JP2006127080A (ja) パイプラインプロセッサ
JPH0769800B2 (ja) データ処理装置
JP2010152640A (ja) 情報処理装置およびパイプライン処理方法
JP2000181701A (ja) 命令処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110218

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20111125

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20111205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121019

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130628

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130827

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131018

R151 Written notification of patent or utility model registration

Ref document number: 5395383

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151