[go: up one dir, main page]

JP2010218030A - プロセッサ - Google Patents

プロセッサ Download PDF

Info

Publication number
JP2010218030A
JP2010218030A JP2009061612A JP2009061612A JP2010218030A JP 2010218030 A JP2010218030 A JP 2010218030A JP 2009061612 A JP2009061612 A JP 2009061612A JP 2009061612 A JP2009061612 A JP 2009061612A JP 2010218030 A JP2010218030 A JP 2010218030A
Authority
JP
Japan
Prior art keywords
register
data
general
area
processor
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.)
Pending
Application number
JP2009061612A
Other languages
English (en)
Inventor
Hiroaki Sugita
弘晃 杉田
Seiji Maeda
誠司 前田
Tatsuya Mizutani
竜也 水谷
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 JP2009061612A priority Critical patent/JP2010218030A/ja
Priority to US12/715,895 priority patent/US20100235607A1/en
Publication of JP2010218030A publication Critical patent/JP2010218030A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3648Debugging of software using additional hardware
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】プロセッサ内のレジスタの値を保持するためのデバッグ用の別なレジスタを設けることなく、そのレジスタの値を保存することができるプロセッサを提供する。
【解決手段】プロセッサは、モードを設定する設定レジスタ52aと、スカラ演算時に使用されるプリファードスロットSL1と、スカラ演算時に使用されないスロットSL2-SL4を含む汎用レジスタ10と、スカラ演算時に設定レジスタ52aに設定されたモードにより指定されたレジスタのデータを選択して出力する選択器52bと、汎用レジスタ10のプリファードスロットSL1を用いてスカラ演算を実行し、スカラ演算の演算結果データを、汎用レジスタ10のプリファードスロットSL1に保存する演算器51とを有し、選択器52bから出力されたレジスタのデータは汎用レジスタ10のスロットSL2-SL4に保存される。
【選択図】図3

Description

本発明は、プロセッサに関する。
従来より、計算機上で実行されるソフトウエアプログラム(以下、単にプログラムという)の開発において、デバッグが行われている。
プログラムのデバッグを行うときに、例えば、データを変更した時点におけるプログラムカウンタの値、スタックポインタの値、そのデータの変更前の値等の各種レジスタの情報が確認できれば、このような付加的な情報は、そのプログラムを開発する者にとって、すなわちプログラマにとって、エラーの発生原因の解析のために有用な情報となる。
プログラムの実行中のある時点におけるこのような各種レジスタの値等の付加情報を得るためには、付加情報を保存するための記憶領域を確保し、かつ、デバッグ対象のプログラム中に、その付加情報保存のための命令を挿入する必要がある。しかし、このような命令の挿入は、プログラムの実行性能を低下させてしまうという問題がある。
そこで、プログラムの処理に影響を与えることなく、デバッグをする者がプロセッサの内部レジスタの値を外部において知ることができるようにした技術が提案されている(例えば、特許文献1参照)。その提案のマイクロプロセッサは、演算処理において使用するレジスタの内容を複写して保持するミラーレジスタを別途有している。
しかし、この提案の方法によれば、デバッグ用のレジスタを別途設け、さらに、デバッグ用の情報を保存するための外部メモリが必要になるという問題があった。
特開2003−186854号公報
そこで、本発明は、プロセッサ内のレジスタの値を保持するためのデバッグ用のレジスタを別途設けることなく、そのレジスタの値を保存することができるプロセッサを提供することを目的とする。
本発明の一態様によれば、モードを設定する設定レジスタと、所定の演算時に使用される第1の領域と、前記所定の演算時に使用されない第2の領域を含む少なくとも1つの汎用レジスタと、前記少なくとも1つの汎用レジスタの前記第1の領域を用いて前記所定の演算を実行し、前記所定の演算の演算結果データを、前記少なくとも1つの汎用レジスタの前記第1の領域に保存する演算器と、前記所定の演算時に前記設定レジスタに設定された前記モードに応じて、前記少なくとも1つのレジスタのデータを選択して前記第2の領域に出力し、あるいは前記所定の演算時に前記第1の領域及び第2の領域に保存されたデータを用いて、前記設定レジスタに設定された前記モードに応じた判定処理を実行して前記判定処理の結果に対して所定の信号を前記演算器に出力する出力回路と、を有するプロセッサを提供することができる。
本発明のプロセッサによれば、プロセッサ内のレジスタの値を保持するためのデバッグ用のレジスタを別途設けることなく、そのレジスタの値を保存することができる。
本発明の第1の実施の形態に係る汎用レジスタの構成を説明するための図である。 本発明の第1の実施の形態に係るプロセッサを用いた計算機システムの構成例を示すブロック図である。 本発明の第1の実施の形態に係る各プロセッサの構成例を示すブロック図である。 本発明の第1の実施の形態に係る選択部の構成例を示すブロック図である。 本発明の第1の実施の形態に係るデバッグ処理実行時の処理の流れの例を示すフローチャートである。 本発明の第2の実施の形態に係るプロセッサの構成を示すブロック図である。 本発明の第2の実施の形態に係る判定部の構成例を示すブロック図である。
以下、図面を参照して本発明の実施の形態を説明する。
(第1の実施の形態)
(構成)
まず、図1から図3に基づき、本発明の第1の実施の形態に係わるプロセッサの構成について説明する。プロセッサは、演算器と各種レジスタを含んでいる。その各種レジスタには、汎用レジスタ (GPR: General Purpose Register)が含まれる。
汎用レジスタは、各種演算処理において利用され、演算結果を保存して、さらに次のあるいは他の演算処理において利用されるレジスタである。
本実施の形態に係るプロセッサは、ベクトル演算を実行可能なSIMD型プロセッサであり、演算器は、例えば128ビット(16バイト)のビット幅のデータを処理単位として処理可能に構成されている。汎用レジスタは、複数、例えば128個、設けられており、各汎用レジスタには、128ビットのデータが保存可能となっている。
プロセッサは、ベクトル演算時の処理は128ビット単位で行われるため、使用する各汎用レジスタの128ビットの全てが使用される。また、プロセッサは、スカラ演算も実行可能であり、スカラ演算時には、使用する各汎用レジスタの一部であるプリファードスロットだけが使用される。
図1は、本実施の形態に係る汎用レジスタの構成を説明するための図である。図1に示すように、各汎用レジスタ10は、128ビット(16バイト)の幅を持ち、スカラデータあるいはアドレスに関する処理を実行する時には、汎用レジスタ10上の所定の部分(以下、プリファードスロットという)SL1に入っているデータが、処理に利用される。図1では、16バイト中、バイトインデックス0から3の部分が、プリファードスロットSL1である。128ビットは、4つのスロットSL1からSL4に分けられて、各スロットには、32ビットのデータが保存される。
例えば、プロセッサが、32ビットの整数演算を実行する時には、プリファードスロットSL1のバイトインデックス0から3の位置にはその演算に使用するデータが保存されるが、残りのバイトインデックス4から15の部分は、そのスカラ演算のためには使用されない空きスロットである。また、そのスカラ演算結果も、プリファードスロットであるスロットSL1のみに保存される。
一方、プロセッサが、ベクトル演算を実行する時には、汎用レジスタ10のバイトインデックス0から15の全てを使用して、データの読み出しと保存を行う。すなわち、汎用レジスタ10は、スカラ演算のために使用される記憶領域としてのプリファードスロットSL1と、スカラ演算のためには使用されない記憶領域としてのスロットSL2からSL4とを含む。
従って、本実施の形態のプロセッサは、スカラ値とベクトル値を共に、同一の汎用レジスタ10に保存するようにして汎用レジスタを有効に利用しているので、スカラ演算用の汎用レジスタとベクトル演算用の汎用レジスタを個別に設けていないので、汎用レジスタの個数を減らすことができる。後述するように、本実施の形態では、スカラ値の保存のために使用されていない汎用レジスタの記憶領域に、デバッグ時にプログラムの不具合の原因解析に有用となる情報を保存することにより、汎用レジスタの有効利用が図られている。
図2は、本実施の形態に係るプロセッサを用いた計算機システムの構成例を示すブロック図である。
図2に示すように、計算機システムは、複数のプロセッサを含む本体部11と、メインメモリ12と、本体部11に接続されたモニタ13とを含む。
本体部11は、メインとなるCPUコア21と、それぞれが独立した信号処理を行うプロセッサ22から29とを含む、例えば1チップに集積した並列処理可能な半導体装置のチップである。本体部11には、モニタ13と接続するためのインターフェース(I/F)31がさらに含まれている。本体部11内の各プロセッサと、インターフェース31と、メインメモリ12は、内部のバス32を介して互いに接続されている。
メインのCPUコア21は、8つのプロセッサ22から29を統轄制御するプロセッサであり、1次キャッシュ、二次キャッシュおよび演算部を含む。
プロセッサ22から29のそれぞれは、演算部と、記憶部としてのローカルメモリを含む。さらに、プロセッサ22から29のそれぞれは、上述した汎用レジスタ群を含み、その汎用レジスタ群を用いて、ベクトル演算とスカラ演算の両方が実行可能である。
例えば、SIMD演算処理を含むプログラムが、各プロセッサにおいて実行されるとき、SIMD演算時には、1つの汎用レジスタ10に4つの32ビットデータが保存され、4つのデータが同時に処理される。また、スカラ演算時には、1つの汎用レジスタ10の一部の記憶領域であるプリファードスロットSL1のみがスカラ演算のために使用される。
メインメモリ12には、メインのCPUコア21とプロセッサ22から29において実行されるプログラム及びデータが記憶される。メインメモリ12に記憶されたプログラムが、CPUコア21及びプロセッサ22から29にロードされて実行される。
さらに、バス32には、モニタ13用のインターフェース(I/F)31が接続されている。例えば、デバッグ時には、デバッグプログラムが、CPUコア21及びプロセッサ22から29上で実行され、デバッグ用画面がモニタ13の画面上に表示される。
従って、本体部11とメインメモリ12は、計算機システムを構成し、各プロセッサ上で各種プログラムを実行可能である。そして、ユーザは、本体部11にデバッグプログラムを搭載してデバッガとしても機能させ、デバッグ時には、各種レジスタ等の内容を、モニタ13の画面上に表示させて、SIMD演算処理を含むプログラムのデバッグを行うことができる。
図3は、各プロセッサの構成例を示すブロック図である。ここでは、プロセッサ22の構成を説明するが、他のプロセッサ23から29の構成は、プロセッサ22と同様の構成であるので、説明は省略する。
図3に示すように、プロセッサ22は、演算部41と、記憶部としてのローカルメモリ42を含み、バス32と接続されている。演算部41は、演算器51と、選択部52と、汎用レジスタ群53を含む。汎用レジスタ群53には、それぞれが図1に示すような4つのスロットを有する複数の汎用レジスタ10が含まれる。
演算器51は、ローカルメモリ42に記憶されたプログラムとデータを用いて、そのプログラムを実行する。上述したように、プロセッサ22は、ベクトル演算とスカラ演算の両方を実行可能である。演算器51は、実行する命令によって、スカラ演算を実行するのか、ベクトル演算を実行するのかを判定することができる。
演算器51は、ベクトル演算を実行するときは、所定の汎用レジスタ10を利用して、SIMD演算等を実行する。SIMD演算時には、4つのスロットが全て利用される。
また、演算器51は、スカラ演算を実行するときは、所定の汎用レジスタ10を利用して、スカラ演算を実行するが、4つのスロットのうちの1つ、例えば、プリファードスロットSL1のみを、そのスカラ演算のために利用する。
そして、後述するように、スカラ演算のために利用されない3つのスロットSL2からSL4の全てあるいは一部には、選択部52において後述するモードにより指定されたデータが、保存される。
選択部52は、設定レジスタ52aを含む。設定レジスタ52aには、モードが、ここでは動作モードOMが、設定される。複数の種類の動作モードOMが予め設定されており、設定レジスタ52aには、その内の1つの動作モードOMが外部から設定可能となっている。
選択部52は、演算部41内の各種レジスタのデータが取得できるように接続されている。図3は、プログラムカウンタ(PC)の値を保持するレジスタ61と、スタックポインタ(SP)の値を保持する1つの汎用レジスタ中の一つのスロットの値を保持するレジスタ62と、演算器51内の実行命令(EC)を保持するレジスタ(図示せず)等が、選択部52に接続されていることを示している。
選択部52の演算器51への出力内容は、設定レジスタ52aに設定された動作モードOMに基づいて決定される。すなわち、選択部52は、スカラ演算時に設定レジスタ52aに設定された動作モードにOMより指定された少なくとも1つのレジスタのデータを選択して出力する出力回路である。
設定レジスタ52aへの動作モードOMの設定は、デバッグ時に、あるいはデバッグ実行前に、バス32を介して、デバッグを行うユーザの指示あるいはプログラムに基づいて、CPUコア21から行われる。
そして、選択部52は、その設定された動作モードOMに応じて、各種レジスタのデータを選択して、演算器51に出力する。例えば、ある動作モードOMが、プログラムカウンタ(PC)の値と、スタックポインタ(SP)の値と、演算器51において実行中の実行命令(EC)を、選択して、演算器51に出力するモードであれば、選択部52は、これらの指定されたデータを演算器51に出力する。
図4は、選択部52の構成例を示すブロック図である。選択部52は、設定レジスタ52aと、選択器52bとを含む。選択部52の選択器52bは、演算器51、汎用レジスタ群53、プログラムカウンタ61等と接続されており、実行命令(EC)、プログラムカウンタ(PC)の値、スタックポインタ(SP)の値、等のデータを取得可能となっている。選択器52bは、設定レジスタ52aに設定された動作モードOMに応じたデータだけを選択する。選択された1又は2以上のデータは、演算器51へ、所定の順番で出力、あるいはそれぞれ所定の信号線を介して出力される。選択部52からのデータは、スロットSL2からSL4のそれぞれに対応付けられて、出力される。すなわち、選択部52は、スカラ演算時に、動作モードOMに応じてプロセッサ22の内部の各種レジスタから演算器51に供給するデータを選択して、対応するスロットに出力する回路である。
演算器51は、スカラ演算時に、スカラ演算が終了し、その演算結果を所定の汎用レジスタ10のプリファードスロットSL1に保存するときに、一緒に、選択部52の出力データを付加情報として、対応するスロットSL2からSL4に保存する。例えば、演算器51は、32ビットの整数演算の結果を、所定の汎用レジスタ10のプリファードスロットSL1に保存するときに、その汎用レジスタ10の空きスロットであるスロットSL2からSL4に、選択部52に事前に設定されている設定情報である動作モードOMに基づいて選択された付加情報を保存する。
なお、上述した例では、選択部52において選択されたデータは、演算器51を介して空きスロットSL2からSL4に保存されているが、演算器51を介さずに、選択部52から直接空きスロットSL2からSL4に保存するように、プロセッサ22を構成してもよい。その場合、選択部52において選択されたデータは、選択部52によって空きスロットSL2からSL4に保存される。
(動作)
次に、計算機システムの動作を説明する。デバッグプログラムが計算機システムの本体部11において実行されるときに、各プロセッサの選択部52の設定レジスタ52aへの動作モードの設定が予め行われる。
例えば、ユーザが開発プログラムに不具合を発見したときに、その不具合の発生に関連するスカラ演算の部分を実行させて、そのスカラ演算時における、実行命令(EC)とスタックポインタ(SP)の内容を確認したい場合がある。そのような場合は、ユーザは、スカラ演算時に、実行命令(EC)をスロットSL2に保存し、スタックポインタ(SP)の値をスロットSL3に保存するような動作モードを、設定レジスタ52に予め設定する。
あるいは、ユーザは、スカラ演算時に、実行命令(EC)とスタックポインタ(SP)とプログラムカウンタ(PC)の内容を確認したい場合がある。そのような場合は、ユーザは、スカラ演算時に、実行命令(EC)をスロットSL2に、プログラムカウンタ(PC)の値をスロットSL3に、そしてスタックポインタ(SP)の値をスロットSL4に保存するような動作モードを、設定レジスタ52に予め設定する。
さらにあるいは、ユーザは、不具合の発生に関連するスカラ演算の部分を実行させて、そのスカラ演算時における、直前のデータを確認したい場合がある。そのような場合は、ユーザは、直前のデータを保存する動作モードを選択部52の設定レジスタ52aに設定する。例えば、32ビットの整数演算の場合には、選択部52は、過去3回までそのスカラ演算値を更新したときの値を選択して、3回前の値をスロットSL4に、2回前の値をスロットSL3に、そして、1回前の値をスロットSL2に保持し、保持した各データを、出力することができる動作モードが設定される。すなわち、スカラ演算の変更履歴データを汎用レジスタ10の未使用領域に保存することができる。
なお、32ビットの整数以外の値でも同様のことが可能であり、例えば8ビットの整数演算の場合、過去15回までの変更履歴を保存し、64ビットの浮動小数点演算の場合、過去1回の変更履歴を保存するような動作モードが設定可能である。このような過去の変更履歴データは、例えば1,2,3,4と連続して増加すべき値が、突然不連続な値となってしまった場合に、何処が不適切であったかの原因を突き止める場合に、有用である。
なお、動作モードの設定において、空きスロットに保存されるデータの例についての以上説明した例は、一例であり、後でさらに詳述する。
図5は、デバッグ処理実行時の処理の流れの例を示すフローチャートである。まず、ユーザは、デバッグ処理プログラム上で、デバッグ対象のプログラムを実行させる前に、動作モードの設定を行う(ステップS1)。その結果、図3において点線で示すように、設定レジスタ52aに動作モードOMが設定される。
なお、この動作モードの設定は、例えば、モニタ13の画面上に設定用の画面を表示させて、表示された複数の動作モードの中から、空きレジスタに保存したいレジスタを選択することにより、行われる。
そして、ユーザは、そのような動作モードの設定をした後に、デバッグプログラム上で、不具合を有するプログラムを実行させる(ステップS2)。すなわち、デバッグ対象プログラムの実行が行われる。
プログラムが実行されるとき、実行命令がSIMD命令であれば、4つのスロットを全て使用してSIMD演算が行われる。
実行命令がスカラ演算の命令であるとき、演算器51は、演算結果を、所定の汎用レジスタ10中のプリファードスロットSL1に保存するときに、選択部52からのデータも併せて、スロットSL2からSL4の中の指定されたスロットに保存する。
そして、スカラ演算に使用された汎用レジスタ10のデータは、演算器51のストア命令により、ローカルメモリ42の所定の領域に保存することができる。よって、ユーザは、そのスカラ演算時における所望のデータを、モニタ13に表示させて確認することができる。
(空きスロットに保存されるデータの例)
次に、空きスロットSL2からSL4に保存するデータの例を説明する。
1)プリファードスロットに保存されていた前の値
このデータは、プリファードスロットSL1にデータが書込まれる際に、プリファードスロットSL1に直前まで格納されていたデータであり、空きスロットに、例えばスロットSL2に、保存される。
さらに、複数の空きスロットに複数個のデータを保存するようにしてもよく、その場合は、直近の複数個のデータ、すなわち履歴データが保存される。例えば、上述したように、32ビットの整数型のデータを、プリファードスロットSL1に格納する場合、直近の3回までの書き込みデータをスロットSL2からSL4に保存することが可能である。
2)演算を行った命令
このデータは、プリファードスロットにデータを格納する際に、その格納を指示したプログラムの命令セットであり、空きスロットに保存される。
さらに、空きスロットに複数個のデータを保存するようにしてもよく、その場合は、直近の複数個の実行命令が保持される。例えば、命令セットが32ビットに固定で、32ビットの整数型の演算結果データをプリファードスロットSL1に格納する場合、直近の実行命令を3回分スロットSL2からSL4に保存することが可能である。
3)命令実行時のプログラムカウンタ(PC)の値
このデータは、プリファードスロットSL1にデータを格納する際に、その格納を指示したプログラムのプログラムカウンタ(PC)の値であり、空きスロットに保存される。
さらに、空きスロットに複数個のデータを保存可能な場合は、直近の複数個のプログラムカウンタ(PC)の値が保持される。例えば、プログラムカウンタ(PC)の値が32ビットであり、32ビットの整数型の演算結果データをプリファードスロットSL1に格納する場合、直近のプログラムカウンタ(PC)の値を3回分スロットSL2からSL4に保存することが可能である。
4)スタックポインタ(SP)の値
このデータは、プリファードスロットSL1にデータを格納する際に、その格納を指示したプログラムを実行した際のスタックポインタ(SP)の値であり、空きスロットに保存される。
さらに、空きスロットに複数個のデータを保存可能な場合は、直近の複数個のスタックポインタ(SP)の値が保持される。例えば、スタックポインタスタックポインタ(SP)の値が32ビットであり、32ビットの整数型の演算結果データをプリファードスロットSL1に格納する場合、直近のスタックポインタスタックポインタ(SP)の値を3回分スロットSL2からSL4に保存することが可能である。
5)上記の組み合わせ
上記1)〜4)では、過去の履歴データとして、演算結果、実行命令、プログラムカウンタ(PC)の値等を複数個保持しているが、上述した例のように、これらデータを組み合わせてもよい。各種レジスタのデータを保持するようにすることにより、デバッグ時に種々の内部のレジスタのデータを得て確認することができ、より効果的にデバッグを行うことが可能となる。
以上のように、本実施の形態のプロセッサを用いれば、スカラ演算時に各種データを1以上保存するような動作モードを予め複数定めておき、選択部52の設定レジスタ52aに所望の動作モードを設定することにより、デバッグを行う者の意図に応じた付加情報を自在に得ることができる。
なお、以上の説明では、プロセッサ22から29において汎用レジスタ10の空きスロットの説明をしたが、CPUコアのプロセッサ21においても、汎用レジスタの空きスロットを上述したように有効利用してもよい。
また、上述した例は、複数のプロセッサを搭載した半導体装置の例であるが、一つのプロセッサだけが搭載されている半導体装置においても、同様に適用できることは言うまでもない。
以上説明したように、本実施の形態によれば、スカラ演算時に、汎用レジスタの演算結果データがストアされる時に、自動で空きスロットに所望のデータが保存される。そして、プリファードスロットのサイズ毎に専用のストア命令によらずに、プリファードスロットに保存されている値と共に、空きスロットに保存されている値もあわせてローカルメモリに保存することができる。このようにすることで、プログラム開発者は、容易にスカラ演算時に所望のレジスタデータを確認することができるだけでなく、動作モードを変更することによって、確認したい所望のデータを容易に変更することもできる。
よって、本実施の形態のプロセッサによれば、プロセッサ内部の各種レジスタの値を保持するための新たなハードウエア回路を必要としないで、各種レジスタの値を保存することができる。
(第2の実施の形態)
次に、本発明の第2の実施の形態に係るプロセッサについて説明する。
本実施の形態に係るプロセッサでは、汎用レジスタ中の空きスロットは、所定の判定処理の実行時に用いられる判定用のデータを記憶しておく記憶領域として使用される。そして、その判定処理のモードが設定されると、本実施の形態のプロセッサでは、スカラ演算時に、スカラ演算結果等のデータと判定用のデータを比較して、その比較結果に応じて、所定の信号を、ここでは割り込み信号を、出力する処理、が実行される。
図6は、本実施の形態に係るプロセッサの構成を示すブロック図である。第1の実施の形態と同じ構成要素については、同じ符号を付し説明は省略する。
プロセッサ22Aは、演算部41に判定部54を有する。判定部54は、動作モードOMが設定される設定レジスタ54aを含む。設定レジスタ54aには、実行すべき判定処理を指定するモード、すなわち動作モード、が設定される。動作モードOMの設定信号は、バス32を介して、プロセッサ22の外部から、例えば、CPUコア21から設定される。
さらに、スカラ演算において使用される汎用レジスタ10中の、空きスロットSL2からSL4の全てあるいは一部に、判定用データが保存される。そのデータは、プロセッサ22Aにおいて実行されるデバッグ対象プログラムに含まれた、すなわち埋め込まれた、命令により、空きスロットSL2からSL4に保存される。
そして、判定部54は、その汎用レジスタ10に保存された判定用データを、読み出して、設定された動作モードに応じた判定処理を実行する。判定処理の結果は、割り込み信号として、演算器51に出力される。
図7は、判定部54の構成例を示すブロック図である。判定部54は、設定レジスタ54aと、判定器54bとを含む。判定部54の判定器54bは、演算器51と接続されており、演算器51から、比較及び判定に必要なデータを取得可能となっている。言い換えると、判定器54bは、設定レジスタ54aに設定された動作モードOMに応じたデータ比較と判定結果出力を行う比較器である。
判定用のデータは、演算器51から供給される汎用レジスタ10のデータである。汎用レジスタ10の各スロットのデータは、各スロットに対応付けられて、判定器54bに供給される。例えば、汎用レジスタ10の各スロットのデータは、演算器51から、所定の順番で出力、あるいはそれぞれ所定の信号線を介して出力される。よって、演算器51からのデータは、スロットSL1からSL4のそれぞれに対応付けられて、出力される。
すなわち、判定器54bは、スカラ演算時に、動作モードOMに応じて演算器51からのスロットSL1からSL4のデータを用いて、設定レジスタ54aに設定された動作モードOMに応じた判定処理を実行して、判定結果に対して割り込み信号を出力する出力回路である。
演算器51は、スカラ演算時に、スカラ演算が終了し、その演算結果を所定の汎用レジスタ10のプリファードスロットSL1に保存するときに、その汎用レジスタ10の各スロットSL1からSL4のデータを、判定部54に供給する。例えば、演算器51は、32ビットの整数演算の結果を、所定の汎用レジスタ10のプリファードスロットSL1に保存するときに、その汎用レジスタ10の各スロットSL1からSL4のデータを、判定部54に出力する。
そして、判定部54は、予め設定された動作モードOMに基づいて、例えば、プリファードスロットSL1のデータと、空きスロットSL2からSL4のデータとを、比較して、比較結果を出力する。例えば、比較結果が所定の条件に合致すると、判定部54は、所定の割り込み信号を、演算器51に出力する。
その結果、所定の条件に合致した状態が発生したことを、ユーザに知らせることができる。
(動作)
次に、本実施の形態の計算機システムの動作を説明する。デバッグプログラムが計算機システムの本体部11において実行されるときに、各プロセッサの判定部54の設定レジスタ54aに動作モードの設定が予め行われる。
動作モードは、上述したように、判定処理の内容を示し、どのデータをどのように比較し、その比較結果がどのような場合に、割り込み信号を出力するかを示すものである。
例えば、ユーザが開発プログラムに不具合を発見したときに、その不具合の発生に関連するスカラ演算の部分を実行させて、そのスカラ演算結果のデータが、所定の範囲の値であるか否かを確認したい場合がある。具体的には、スカラ演算時に、演算結果データと、その所定の範囲の最小値と最大値とを比較させて、演算結果データがその所定の範囲外になった場合に、割り込み信号を発生させることにより、ユーザは、演算結果データがその所定の範囲外になったことを知ることができる。
そのような場合には、ユーザは、その最小値と最大値のデータを、それぞれ所定の汎用レジスタ10のスロットSL2とSL3に予め記憶させる命令を、デバッグ対象プログラム中に埋め込む。すなわち、デバッグを行うとき、ユーザは、デバッグ対象プログラム中に、所定の汎用レジスタの空きスロットに所定の判定用データを記憶させる命令を、予め追加しておく。
そして、動作モードOMを、プリファードスロットSL1の値が、最小値と最大値の範囲にあるか否かの比較するモードに、予め設定する。
デバッグ対象プログラム中に埋め込まれた命令は、デバッグ対象プログラムが実行されたときに、最初の段階でロットSL2とSL3に最小値と最大値のデータを書き込む。その後、デバッグ対象プログラムの本体部分が実行される。
その結果、デバッグ対象プログラムの実行中に、スカラ演算が実行された時に、判定器54bは、プリファードスロットSL1に保存された演算結果データと、スロットSL2とSL3に保存された最小値と最大値を比較する。そして、演算結果データが、その所定の範囲内にないときは、判定器54bは、所定の割り込み信号を演算器51に出力する。
あるいは、ユーザは、スカラ演算の演算結果が、所定の値に一致するか否かを検出したい場合がある。そのような場合は、ユーザは、所定の値のデータを、スロットSL2に保存するように、デバッグ対象プログラム中に、命令を埋め込む。そして、ユーザは、動作モードを、プリファードスロットSL1の値(すなわち演算結果データ)が、その所定の値と一致するか否かを比較し、一致すると、所定の割り込み信号を演算器51に出力するモードに設定する。
なお、動作モードの設定において、比較データとその比較内容についての以上説明した例は、一例であり、後でさらに他の例を詳述する。
デバッグ処理実行時の処理の流れは、上述した図5の処理と同様である。すなわち、ユーザは、デバッグ処理プログラム上で、デバッグ対象のプログラムを実行させる前に、動作モードの設定を行う(ステップS1)。その結果、図6において点線で示すように、設定レジスタ54aに動作モードOMが設定される。
なお、この動作モードの設定は、第1の実施の形態と同様に、例えば、モニタ13の画面上に設定用の画面を表示させて、表示された複数の動作モードの中から、空きレジスタに保存したいレジスタを選択することにより、行われる。
そして、ユーザは、そのような動作モードの設定をした後に、デバッグプログラム上で、不具合を有するプログラムを実行させる(ステップS2)。すなわち、デバッグ対象プログラムの実行が行われる。デバッグ対象プログラムの実行時の最初の処理において、上述した判定用データの空きスロットへの書き込みが行われる。
プログラムが実行されるとき、第1の実施の形態と同様に、実行命令がSIMD命令であれば、4つのスロットを全て使用してSIMD演算が行われる。
そして、実行命令がスカラ演算の命令であるとき、演算器51は、演算結果を、所定の汎用レジスタ10中のプリファードスロットSL1に保存するときに、その汎用レジスタ10の各スロットSL1からSL4のデータを、判定部54に供給する。
その結果、判定部54は、設定された動作モードOMに基づいて、所定の比較演算による判定処理を実行し、判定結果が、割り込み信号として、演算器51に供給される。例えば、演算結果が所定の範囲内の値であれば、割り込み信号は発生しないが、演算結果が所定の範囲外にあれば、割り込み信号が発生する。
発生した割り込み信号に応じて、所定の割り込み処理が実行されて、例えば、プリファードスロットSL1の値(すなわち演算結果)がスロットSL2とSL3の最小値と最大値の範囲外になったことを、モニタ13の画面上に表示して、ユーザに告知する処理が実行される。よって、ユーザは、そのスカラ演算時において、割り込み信号発生時の演算結果データを、モニタ13に表示させて確認することができる。
また、本実施の形態においても、図6において点線で示すように、各スロットのサイズ毎に専用のストア命令によらずに、プリファードスロットに保存されている値と共に、空きスロットに保存されている値もあわせてローカルメモリ42に保存することができる。
(判定用データと判定処理の例)
次に、判定用データと判定処理の例を説明する。
1)スタックポインタに関する制限
汎用レジスタをスタックポインタとして使用するように実装されたプロセッサの場合、所定の汎用レジスタのプリファードスロットSL1に、スタックポインタ(SP)の値が保存される。そのような場合に、デバッグを行う者は、そのスタックポインタ(SP)の値を保存する汎用レジスタの空きスロットSL2に、実行中のプログラムより求まるスタックポインタ(SP)の限界値データを設定する命令を、デバッグ対象プログラム中に追加する。そして、デバッグを行う者は、スタックポインタ(SP)の値が、その限界値を超える値となった場合に例外を発生する動作モードOMを、判定部54の設定レジスタ54aに設定する。
例えば、いわゆるコンピュータへの攻撃者が悪意を持ったデータをそのコンピュータに処理させて、スタックがプログラマの想定した以上に大きくなり、スタックポインタ(SP)の値がデータを保持する領域を指し示すことになった場合、従来は、スタックオーバーフローとなり、その攻撃者の意図に沿ったプログラムの実行状態になったり、メモリに保存されているデータが破壊され、システムが不安定となったり、等々していた。このような場合に、本実施の形態のプロセッサを用いれば、スタックポインタ(SP)の取りうる値の範囲を事前に制限しておき、想定外の範囲をとった場合に例外を発生させるようにすることによって、このような攻撃、あるいはプログラム実行上の問題に対処することが可能となり、ひいては、計算機システムの安定性向上に役に立つ。
2)プログラムカウンタの値のチェック
スタックポインタ(SP)など、プログラムの実行時にしばしばスカラ値がアクセスされることが事前に判明している汎用レジスタがある。そのような場合に、デバッグを行う者は、そのレジスタがアクセスされたときのプログラムカウンタ(PC)の最大値と最小値を設定する命令を、デバッグ対象プログラム中に追加する。そして、デバッグを行う者は、プログラムカウンタ(PC)の値が、その範囲外になった場合に例外を発生する動作モードOMを、判定部54の設定レジスタ54aに設定する。
このようにすることで、実行中のプログラムが、常に事前にプログラマが作製したプログラムの想定した領域のものであることが保障できるため、攻撃者が悪意を持ったデータをプロセッサに処理させるようにする場合に、そのような攻撃のための命令の実行が行われ難くなり、計算機システムの安全性向上に役に立つ。
3)変数のアクセス可能場所固定
デバッグを行う者は、スカラ値を保存している汎用レジスタの空きスロットに、その保存されているスカラ値を上書きすることが可能なプログラムの命令セットの種別、または、その数値を上書きすることが可能なプログラムカウンタの範囲を設定する命令を、デバッグ対象プログラム中に追加する。そして、デバッグを行う者は、その指定された命令セットの種別又はその指定されたプログラムカウンタ(PC)の範囲に合致しない、命令セット又はプログラムカウンタ(PC)の値が発生した場合に、例外を発生する動作モードOMを、判定部54の設定レジスタ54aに設定する。
このようにすることで、ある変数へのアクセスに関する条件の絞り込みが可能となるので、デバッグ時の原因解析などに有用である。
以上のように、本実施の形態のプロセッサを用いれば、プログラム開発者は、容易にスカラ演算時に演算結果データ等の内容が所定の条件になっているか否か等の確認をすることができるだけでなく、動作モードを変更することによって、確認したい内容を容易に変更することもできる。
なお、上述した例では、判定部54は、判定用データを演算器51から取得する構成であるが、判定用データの全てあるいは一部を、第1の実施の形態において示したように、各種レジスタから取得できるようにしてもよい。
上述したように、通常、これまでのプロセッサは、例えば、32ビットの整数を計算する時には、汎用レジスタのバイトインデックス0から3の位置には演算に使用するデータが保存されるが、残りのバイトインデックス4から15の領域は使用されない。また、演算結果も、汎用レジスタのバイトインデックス0から3のみに保存され、バイトインデックス4から15の空きスロットの値は変更されない。
これに対して、上述した各実施の形態では、スカラ値を保存する場合に使用されていない汎用レジスタの記憶領域に、すなわち空きスロットを用いて、付加情報としての所望のデータの保存、あるいは、判定用データの保存を行うようにした。その結果、デバッグをする者は、空きスロットに保存されたデータの内容を確認する、あるいは空きスロットに保存された判定用データと演算結果等との所定の比較結果に基づく判定結果を知ることができる。
以上のように、上述した各実施の形態のプロセッサによれば、プロセッサ内のレジスタの値を保持するためのデバッグ用のレジスタを別途設けることなく、そのレジスタの値を保存することができる。その結果、プロセッサを提供することを目的プログラム開発時に、プログラム開発者の意図していない動作等を容易に見つけることができるようになるため、プログラムの開発効率が向上する。
なお、上述した実施の形態では、選択部と判定器は、各プロセッサに1つであったが、複数設けるようにしてもよい。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
10 汎用レジスタ、11 本体部、12 メインメモリ、13 モニタ、21 CPUコア、22〜29 プロセッサ、31 インターフェース、32 バス、41 演算部、42 ローカルメモリ、51 演算器、52 選択部、52a、54a 設定レジスタ、52b 選択器、54 判定部、54b 判定器

Claims (5)

  1. モードを設定する設定レジスタと、
    所定の演算時に使用される第1の領域と、前記所定の演算時に使用されない第2の領域を含む少なくとも1つの汎用レジスタと、
    前記少なくとも1つの汎用レジスタの前記第1の領域を用いて前記所定の演算を実行し、前記所定の演算の演算結果データを、前記少なくとも1つの汎用レジスタの前記第1の領域に保存する演算器と、
    前記所定の演算時に前記設定レジスタに設定された前記モードに応じて、プロセッサ内の少なくとも1つのレジスタのデータを選択して前記第2の領域に出力し、あるいは前記所定の演算時に前記第1の領域及び第2の領域に保存されたデータを用いて、前記設定レジスタに設定された前記モードに応じた判定処理を実行して前記判定処理の結果に対して所定の信号を前記演算器に出力する出力回路と、
    を有することを特徴とするプロセッサ。
  2. 前記所定の演算は、スカラ演算であり、
    前記演算器は、前記スカラ演算と、前記少なくとも1つの汎用レジスタの前記第1の領域と前記第2の領域とを使用するベクトル演算とを実行可能であることを特徴とする請求項1に記載のプロセッサ。
  3. プロセッサ内の少なくとも1つのレジスタのデータを指定するモードを設定する設定レジスタと、
    所定の演算時に使用される第1の領域と、前記所定の演算時に使用されない第2の領域を含む少なくとも1つの汎用レジスタと、
    前記所定の演算時に前記設定レジスタに設定された前記モードにより指定された前記少なくとも1つのレジスタのデータを選択して出力する選択器と、
    前記少なくとも1つの汎用レジスタの前記第1の領域を用いて前記所定の演算を実行し、前記所定の演算の演算結果データを、前記少なくとも1つの汎用レジスタの前記第1の領域に保存する演算器と、
    を有し、
    前記選択器から出力された前記少なくとも1つのレジスタのデータは前記少なくとも1つの汎用レジスタの前記第2の領域に保存されることを特徴とするプロセッサ。
  4. 前記選択器から出力された前記少なくとも1つのレジスタのデータは、前記演算器又は前記選択器によって、前記少なくとも1つの汎用レジスタの前記第2の領域に保存されることを特徴とする請求項3に記載のプロセッサ。
  5. 判定処理を指定するモードを設定する設定レジスタと、
    所定の演算時に使用される第1の領域と、前記所定の演算時に使用されない第2の領域を含む少なくとも1つの汎用レジスタと、
    前記所定の演算を実行時に、前記所定の演算の演算結果データを、前記少なくとも1つの汎用レジスタの前記第1の領域に保存し、前記第1の領域及び前記第2の領域に保存されたデータを出力する演算器と、
    前記所定の演算時に前記演算器から出力された前記第1の領域及び第2の領域に保存されたデータを用いて、前記設定レジスタに設定された前記モードにより指定された前記判定処理を実行し、前記判定処理の結果に対して所定の信号を前記演算器に出力する判定器と、
    を有することを特徴とするプロセッサ。
JP2009061612A 2009-03-13 2009-03-13 プロセッサ Pending JP2010218030A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009061612A JP2010218030A (ja) 2009-03-13 2009-03-13 プロセッサ
US12/715,895 US20100235607A1 (en) 2009-03-13 2010-03-02 Processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009061612A JP2010218030A (ja) 2009-03-13 2009-03-13 プロセッサ

Publications (1)

Publication Number Publication Date
JP2010218030A true JP2010218030A (ja) 2010-09-30

Family

ID=42731638

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009061612A Pending JP2010218030A (ja) 2009-03-13 2009-03-13 プロセッサ

Country Status (2)

Country Link
US (1) US20100235607A1 (ja)
JP (1) JP2010218030A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2025220131A1 (ja) * 2024-04-16 2025-10-23 三菱電機株式会社 ソフトプロセッサ

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6530011B1 (en) * 1999-10-20 2003-03-04 Sandcraft, Inc. Method and apparatus for vector register with scalar values
US20060190700A1 (en) * 2005-02-22 2006-08-24 International Business Machines Corporation Handling permanent and transient errors using a SIMD unit

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2025220131A1 (ja) * 2024-04-16 2025-10-23 三菱電機株式会社 ソフトプロセッサ

Also Published As

Publication number Publication date
US20100235607A1 (en) 2010-09-16

Similar Documents

Publication Publication Date Title
US7334161B2 (en) Breakpoint logic unit, debug logic and breakpoint method for a data processing apparatus
US6915416B2 (en) Apparatus and method for microcontroller debugging
US20030051122A1 (en) Trace information generation apparatus for generating branch trace information omitting at least part of branch source information and branch destination information on target processing
US5388233A (en) Method and apparatus for counting instruction types using bit masks and a programmable bit map
JP5270330B2 (ja) マルチコアマイコンシステムのシミュレーション方法及びシミュレーション装置
US20030097613A1 (en) Software debugger, system-level debugger, debugging method, and debugging program
JP5532144B2 (ja) プロセッサ、電子制御装置、作成プログラム
US20050028036A1 (en) Program debug apparatus, program debug method and program
JP2009163442A (ja) 演算処理装置及び命令の拡張方法
US7620802B2 (en) Instruction execution device, debugging method, debugging device, and debugging program
AU2017438670B2 (en) Simulation device, simulation method, and simulation program
KR100521110B1 (ko) 이벤트 처리 방법 및 장치
TWI756212B (zh) 處理向量指令
JP2010218030A (ja) プロセッサ
US20050050524A1 (en) Generating software test information
US6990569B2 (en) Handling problematic events in a data processing apparatus
JP5236278B2 (ja) 非同期制御転送
US6772372B2 (en) System and method for monitoring unaligned memory accesses
US20100077383A1 (en) Simulation method and storage medium for storing program
US20120089817A1 (en) Conditional selection of data elements
JP2021033567A (ja) 電子制御装置
JP2006185365A (ja) 半導体装置およびデバッグ方法
JP2006221606A (ja) データプロセッサ
JP2810317B2 (ja) 制御命令演算処理装置
CN120123127A (zh) 例外处理方法、装置、电子设备及可读存储介质