JP2004206389A - Risc型cpu,コンパイラ,マイクロコンピュータ及び補助演算装置 - Google Patents
Risc型cpu,コンパイラ,マイクロコンピュータ及び補助演算装置 Download PDFInfo
- Publication number
- JP2004206389A JP2004206389A JP2002374527A JP2002374527A JP2004206389A JP 2004206389 A JP2004206389 A JP 2004206389A JP 2002374527 A JP2002374527 A JP 2002374527A JP 2002374527 A JP2002374527 A JP 2002374527A JP 2004206389 A JP2004206389 A JP 2004206389A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- cpu
- processing
- interrupt
- compiler
- 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
Links
- 238000012545 processing Methods 0.000 claims abstract description 180
- 238000000034 method Methods 0.000 claims description 49
- 230000003111 delayed effect Effects 0.000 claims description 30
- 238000010586 diagram Methods 0.000 description 27
- 238000012546 transfer Methods 0.000 description 9
- 230000001343 mnemonic effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【解決手段】コンパイラは、割り込み処理から復帰する際にスタック領域を開放する必要がある場合(ステップS1,「有り」)、その開放サイズを復帰命令[rtm3]のオペランドにて指定するようにオブジェクトコードファイルを生成する(ステップS3)。
【選択図】 図1
Description
【発明の属する技術分野】
本発明は、RISC型CPU,そのCPUによって実行されるオブジェクトプログラムを生成するためのコンパイラ、前記CPUと補助演算装置とを備えてなるマイクロコンピュータ、及びそのマイクロコンピュータに搭載される補助演算装置に関する。
【0002】
【従来の技術】
(1)現在、プログラム開発は、例えばC,C++などの高級言語によってソースプログラムを記述することで行い、そのソースプログラムをコンパイラによってコンパイルすることでCPUが実行可能な形式のオブジェクトプログラムを生成することが一般的である。
【0003】
ところで、CPUは、割り込みが発生した場合に割り込み処理を実行する。ここで、図27(a)には、割り込み処理のシーケンスを示し、図27(b)には。割り込み処理プログラムのオブジェクトコードの一例をニモニックで示す。
【0004】
即ち、割り込み処理は、先ず、使用するスタック領域を確保し(ステップA1)、確保したスタック領域にレジスタのデータや戻りアドレスを退避させてから(ステップA2)、割り込みの種類に応じた処理を実行する(ステップA3)。そして、スタック領域に退避させたデータをレジスタに復帰させると(ステップA4)、ステップA1で確保したスタック領域を開放する(ステップA5,[add.b #36,sp])。それから、戻りアドレスをプログラムカウンタにセットすることで割り込み処理から通常の処理に復帰する(ステップA6,[rt13])。
【0005】
(2)RISC(Reduced Instruction Set Computer)型のCPUでは、プログラムの分岐命令を遅延処理付きの命令(遅延分岐命令)として備えているものが多い。即ち、RISC型CPU特有のパイプライン処理において分岐命令が実行されると、パイプライン処理に「空き」が発生して効率が低下してしまう。そこで、遅延分岐命令は、パイプラインの「空き」の部分に別の命令の処理を割り当てることで、分岐命令の実行と並行して他の命令も実行できるようにするものである(図28(a)参照)。
【0006】
(3)RISC型CPUでは、パイプライン処理による効率化を図るため命令数が少なくなっている。そのため、乗算,除算,剰余算などの演算を行なう場合には、補助演算装置(コプロセッサ)を用いる場合がある。しかしながら、補助演算装置を使用する場合、CPUとの間を専用バスで接続することになると配線量が増大してしまう。配線量の増加を抑制するためには、ROM,RAMなどのその他の周辺回路と共通に接続される汎用バスによって両者の間を接続する構成もある。
尚、これらの従来技術は、何れも、例えば特許文献1に記載されているものである。
【0007】
【特許文献1】
特開平10−289120号公報
【0008】
【発明が解決しようとする課題】
(1)このように、割り込み処理は、文字通り通常の処理を行なっている途中に割込むものであることから、できるだけ短時間で処理を行なって通常の処理に復帰することが望ましい。しかしながら、ステップA1,A2,A4〜A6の処理は必ず行なう必要があり削減することはできないため、処理時間の短縮が困難であった。
【0009】
また、CPUが扱う割り込みについては、大きく分けて、何らかのエラーが発生した場合に発生する例外割り込みと、それ例外の割り込みである通常割り込みとがある。例外割り込みは通常割り込みに対して優先順位が高く、CPUは、例外割り込み処理中に通常割り込みが発生してもマスクされるように構成されている。従って、ユーザプログラムでは、双方の割り込み処理を区別した上で、夫々について必要な処理が行われるようにプログラムする必要があった。
【0010】
(2)しかしながら、分岐命令と並行して実行可能な命令には、命令の種類(例えば、分岐命令)やプログラムにおける処理手順などから一定の制限がある。そして、コンパイラによるコンパイル処理では、遅延分岐命令をコンパイルする際には並行して実行するための命令を必ず出力しなければならない。その場合、並行して実行可能な命令が存在しなければ、図28(b)に示すように、何も処理しない命令であるnop(No OPeration)命令を出力するようになっている。従って、オブジェクトプログラム中には、本来不要であるnop命令がコードとして出力されることになり、プログラムメモリの容量を増加させていた。
【0011】
(3)ところが、CPUと補助演算装置とを汎用バスで接続した場合には、プログラムのバグ等によっては意図しないアクセスが発生することもあり、デバッグ作業が困難となってしまうおそれがある。
【0012】
また、CPUが補助演算装置に演算を行なわせている途中で割り込みが発生すると、実行中の演算を途中で破棄して割り込み発生前の状態から演算を再度やり直したり、或いは、演算途中の状態を保持するか、または演算中は割り込みを禁止するような機構をCPU側に用意する必要がある。
【0013】
これらの内、最も簡単に実現できるものは、割り込みを禁止する機構である。しかし、その場合でも以下のような問題がある。例えば、ソフトウエア(ユーザプログラム)により、補助演算装置による演算を開始させる前に、割り込み禁止命令を実行させ、演算終了後に割り込みを許可する命令を実行させることが考えられるが、その分だけ命令数が増加するので、プログラムメモリの容量が増大してしまう。
【0014】
また、補助演算装置側から、演算開始から演算終了までの期間においてCPUに割り込みを禁止させるために、割り込み禁止信号を出力することも考えられるが、そのための専用信号線が1本余分に必要となってしまう。加えて、一方では、CPUが割り込み禁止状態にされると割り込み処理ができなくなるため、リアルタイム処理性が低下するという問題もある。
【0015】
本発明は上記事情に鑑みてなされたものであり、その第1の目的は、割り込み処理から復帰する場合に要する命令サイクル数を削減することができるRISC型CPU及びコンパイラを提供することにある。
【0016】
また、本発明の第2の目的は、遅延分岐処理を実行するために、オブジェクトプログラム中に不要な命令を出力する必要がないRISC型CPU、また、オブジェクトプログラム中に不要な命令を出力しないコンパイラを提供することにある。
【0017】
更に、本発明の第3の目的は、補助演算装置を使用して演算を実行させる場合に、構成を極力簡単にして割り込みを禁止することができるRISC型CPU及びコンパイラ、それらを備えてなるマイクロコンピュータ、並びにそのマイクロコンピュータに搭載される補助演算装置を提供することにある。
【0018】
【課題を解決するための手段】
請求項1記載のRISC型CPUによれば、スタック領域の開放サイズが復帰命令のオペランドにて指定されている。即ち、従来は、割り込み処理で使用したスタック領域を開放するための命令と、割り込み処理からの復帰命令とは夫々独立の命令として実行されていた。何故なら、割り込み処理から復帰する場合には、戻りアドレスを退避させたスタック領域分(CPUハードによって確保される)を別途開放する必要があるからである。
【0019】
これに対して、本発明のRISC型CPUが復帰命令を実行する場合は、開放サイズがオペランドにセットされているので、従来は2段階で行なっていた開放処理を1段階で実行することが可能となる。従って、割り込み処理からの復帰に要する時間を短縮することが可能となる。
【0020】
請求項2記載のRISC型CPUによれば、例外割り込み処理,通常割り込み処理から復帰するための復帰命令が異なっている。斯様に構成すれば、例えば、例外割り込み処理から復帰する場合には通常割り込み処理では行わない独自の処理を行なう必要があるとしても、復帰命令を実行することに付随してその独自の処理を行なわせることが可能である。従って、ユーザプログラム側の負担を軽減することが可能となる。
【0021】
請求項3記載のコンパイラによれば、割り込み処理から復帰する際にスタック領域を開放する必要がある場合、その開放サイズを復帰命令のオペランドにて指定するようにオブジェクトコードを生成する。従って、請求項1記載のRISC型CPUが実行可能なオブジェクトプログラムを生成することができる。また、オブジェクトコードサイズをより小さくすることができる。
【0022】
請求項4記載のコンパイラによれば、割り込み処理が、少なくとも、例外割り込み,通常割り込みの何れであるかが判別できる形式で記述されていれば、夫々の割り込み処理からの復帰命令を異なるオブジェクトコードとして生成する。従って、請求項2記載のRISC型CPUが実行可能なオブジェクトプログラムを生成することができる。そして、ユーザは、割り込み処理のプログラムを簡略化することが可能となる。
【0023】
請求項5記載のRISC型CPUによれば、分岐命令における、遅延分岐オプションの設定に応じてプログラム分岐を行なうか否かを決定する。斯様に構成すれば、CPUは、分岐命令をデコードした段階で、当該命令については遅延分岐を行なわないことを判別できる。従って、そのようなケースでは、当該分岐命令の次にnop命令を配置する必要はなくなるので、オブジェクトコードサイズを小さくすることが可能となる。
【0024】
請求項6記載のコンパイラによれば、分岐命令よりも前に記述されている命令が当該分岐命令の遅延スロットにて実行可能か否かを判定し、その実行可否に応じて遅延分岐オプションを設定すると共に、実行可能である場合は実行可能な命令を当該分岐命令の次に配置する。従って、請求項5記載のRISC型CPUが実行可能なオブジェクトプログラムを生成することができる。
【0025】
請求項7記載のRISC型CPUによれば、補助演算装置にアクセスするための命令を、その補助演算装置だけがデコード可能となる専用命令を備える。そして、その専用命令をデコード若しくは実行している期間は割り込みの受付が禁止される。従って、CPUに、その他の周辺回路などのデバイスが接続されている場合でも、補助演算装置が、その他デバイスによってアクセスされてしまうことを防止できる。また、命令デコーダによるデコード結果に基づいて、CPUのハードウエアが自動的に割り込み受付を禁止するので、ユーザが割り込み制御に関与する必要がなく、補助演算装置側より割り込み禁止信号を出力する必要もない。従って、CPUが補助演算装置にアクセスする場合に、より簡単に割り込み受付を禁止させることができる。
【0026】
請求項8記載のコンパイラによれば、オブジェクトコードにおける演算処理を補助演算装置に実行させるか、或いは、ライブラリによって行なわせるかを、ユーザの設定に応じてソースファイル単位で選択可能であるから、ユーザは、演算速度の要請に応じて最適な実行形態を選択することができる。
【0027】
請求項9記載のコンパイラによれば、補助演算装置に実行させるオブジェクトコードを生成する際に、当該補助演算装置に対するアクセス命令が連続するように配置し、CPUが補助演算装置より演算結果を取得するまでの期間は割り込み処理が発生しないようにコンパイル処理する。従って、CPUは、補助演算装置を用いた演算処理を連続的に実行することができる。
【0028】
請求項10記載のマイクロコンピュータによれば、請求項7記載のRISC型CPUと補助演算装置とを備えて構成される。従って、補助演算装置が、その他のデバイスによってアクセスされてしまうことがなく、且つ、補助演算装置にアクセスする場合に、簡単に割り込み受付を禁止させることが可能なCPUが搭載されたマイクロコンピュータを構成することができる。
【0029】
請求項11記載のマイクロコンピュータによれば、RISC型CPUと補助演算装置とは汎用バスによって接続される。そして、CPUは、専用命令をデコードすると補助演算装置に対して専用命令信号を出力し、補助演算装置は、専用命令信号が出力されている場合に、CPUによって与えられた演算命令をデコードする。
【0030】
斯様に構成すれば、CPUと補助演算装置とが汎用バスで接続されている場合でも、補助演算装置は、専用命令信号が与えられている場合にだけ演算命令をデコードするので、その他のデバイスによって不用意にアクセスが行われることを確実に排除することができる。
【0031】
請求項12記載のマイクロコンピュータによれば、補助演算装置は、演算実行中にRISC型CPUによるアクセスが発生すると、CPUが行なっている処理を一時停止させるための停止信号を出力する。そして、CPUは、前記停止信号が出力されている期間はパイプライン処理を停止する。
【0032】
即ち、上述したように、請求項7記載のRISC型CPUは、補助演算装置にアクセスするための命令をデコード若しくは実行している期間は割り込みの受付が禁止される。そして、その後アクセス時に割り込みが発生しても、補助演算装置が演算の実行を開始すれば停止信号を出力するのでCPUのパイプライン処理が一時停止する。従って、CPUがその期間に割り込みを受け付けたとしても、その処理の実行は補助演算装置の演算が終了するまで待機状態となるので、所望の演算結果を得ることができる。
【0033】
請求項13記載のマイクロコンピュータによれば、請求項3,4,6,8及び9記載のコンパイラによって生成されたオブジェクトプログラムが記憶されるプログラムメモリを備えるので、CPUは、そのオブジェクトプログラムを実行して高速に処理を行なうことができる。
【0034】
【発明の実施の形態】
(第1実施例)
以下、本発明の第1実施例について図1乃至図8を参照して説明する。図6は、プログラム変換装置の構成を示す図である。プログラム変換装置たるパーソナルコンピュータ(パソコン,若しくはワークステーション)1には、コンパイラ2がインストールされている。具体的には、パソコン1の本体1aに内蔵されているハードディスク等の記憶装置(記憶手段)にコンパイラ2のプログラムファイルが記憶されている。
【0035】
本体1a内蔵の記憶装置には、図7に示すように、ユーザが例えばC言語などの高級言語によって記述したソースコードファイル3も記憶されている。そして、ユーザは、コンパイラ2のプログラムをパソコン1上で起動することで、ソースコードファイル3からオブジェクトコードファイル4を変換生成させる。コンパイラ2は、ソースコードファイル3に記述されているC言語のソースコードを読み出してその内容を解釈すると、CPU等が固有の命令によって対応する処理を最も効率的に実行できるようなオブジェクトコードを生成するようにコンパイルを行う。
【0036】
パソコン1の本体1aにはROMライタ5が接続されており、両者は、例えばRS−232C等のシリアル通信プロトコルによって通信が可能となっている。コンパイラ2よって生成されたオブジェクトコードファイル4はROMライタ5に転送されると、ROMライタ5にセットされたマイクロコンピュータ(マイコン)6に内蔵されているROM7(プログラムメモリ,図8参照)にバイナリデータのプログラム100として書き込まれるようになっている。
【0037】
図8は、ワンチップマイコン6の電気的構成を示す機能ブロック図である。マイコン6は、RISC型のCPU8を中心として構成されている。そのCPU8は、EEPROMやフラッシュROMなどからなるROM7と、バス制御部10,並びに第1アドレスバス11及び第1データバス12を介して接続されている。また、バス制御部10からは、第2アドレスバス13及び第2データバス14が分岐しており、それらのバス13,14には、補助演算装置15,RAM16,タイマやA/D変換などその他の周辺回路17が接続されている。
【0038】
CPU8の内部には、演算等を行うための演算部(ALU(Arithmetic Logical Unit) )18,演算部18が演算等を行う場合に使用される複数のレジスタが配置されているレジスタ部19,及びレジスタ部19等にロード/ストア等の制御を行うための制御部20などが配置されている。
【0039】
図1は、コンパイラ2によるコンパイル処理の内容を、本実施例にかかる部分のみ示すフローチャートである。コンパイラ2は、ソースコードファイル3中における割り込み処理部分において、スタック領域を使用しているか否かを判定する(ステップS1)。そして、スタック領域を使用していれば(「有り」)復帰命令[rtm3]のオペランド部に、スタック開放サイズに応じた指定値を4の倍数で設定する(ステップS3)。
一方、ステップS1で、割り込み処理部分においてスタック領域を使用していない場合は(「無し」)復帰命令[rtm3]のオペランド部に「0」を設定する(ステップS2)。
【0040】
図2は図27相当図であり、(a)は、コンパイラ2によってコンパイルされたプログラム100における通常割り込み処理のフローチャート、(b)は、そのプログラム100のニモニック表現である。図2(a)に示すフローチャートでは、図27(a)のフローチャートにおけるステップA5が省略されており、ステップA6に代えて、「割り込み復帰(スタック開放)」のステップA7が配置されている。
【0041】
そして、図2(b)においてステップA7の処理に対応する命令は、
rt13 #36 ・・・(1)
である(m=1)。即ち、従来は、
ステップA5 : add.b #36,sp ・・・(2)
でスタック領域を開放し、
ステップA6 : rt13 ・・・(3)
で割り込み復帰(及び戻りアドレス分のスタック開放)を行なっていたが、本実施例では、上記(1)の1行の命令によってそれらを同時に行うようにコーディングされている。
【0042】
ここで、図3には、(1)の復帰命令21のビット構成を示す。復帰命令[rtm3]は、7ビットの命令部22,1ビットの割り込み種別選択部(m)23、2ビットのフラグ復帰選択部24、6ビットのオペランド部25によって構成されている。(1)で表現される復帰命令のオペランドは[#36]であるが、機械語レベルでは、オペランド部には、即値36を4で除した[9]がセットされるようになっている。
【0043】
図4には、(1)の復帰命令(ステップA7)をCPU8が実行する場合のパイプライン処理を示す。尚、パイプラインには5つのステージがあり、各ステージは以下のように設定されている。
IF:インストラクションフェッチ
DEC:デコード
EXE:命令実行
MEM:メモリ(外部デバイス)アクセス
WB:ライトバック(レジスタ書込み)
【0044】
パイプライン▲1▼では、[rt13]のDECにおいてスタックポインタSPの値が読み込まれ、EXEで次のMEMにおけるアクセスアドレスadrが(4)式で計算される。
adr=sp+(オペランド*4) ・・・(4)
次のMEMでは、スタック上の戻りアドレスと状態フラグがリードされ、WBにおいて、戻りアドレスをプログラムカウンタPCに、状態フラグがステータスレジスタPSRにセットされる。そして、パイプライン▲2▼のEXEにおいて、スタック領域の開放が一括して行なわれる。即ち、スタックポインタSPを(5)式のようにセットする。
sp=sp+(オペランド*4)+4 ・・・(5)
【0045】
ここで、図5には、従来のコンパイル処理によるオブジェクトプログラムに基づいて復帰命令が実行される場合のパイプライン処理を示す。従来は、パイプライン▲1▼で[add.b #36,sp]が実行され、EXEにおいて割り込み処理で確保されたスタック領域の開放が(6)式で行なわれる。
sp=sp+(オペランド*4) ・・・(6)
そして、パイプライン▲2▼で[rt13]が実行され、パイプライン▲3▼のEXEにおいて、戻りアドレス及び状態フラグの退避に使用された領域が(7)式の実行により開放される。
【0046】
sp=sp+4 ・・・(7)
即ち、従来のプログラムによる復帰処理では、スタック領域の開放処理を(6),(7)の2段階で行なっていた。これに対して、本実施例の方式によれば、(6),(7)の処理を(5)で一括して行なうことが可能となり、復帰処理に要する時間が短縮されている。
【0047】
以上のように本実施例によれば、CPU8が備える復帰命令[rtm3]によれば、スタック領域の開放サイズが復帰命令のオペランドにて指定可能であるから、従来は2段階で行なっていた開放処理を1段階で実行することができる。従って、割り込み処理からの復帰に要する時間を短縮することが可能となる。
【0048】
そして、コンパイラ2は、割り込み処理から復帰する際にスタック領域を開放する必要がある場合、その開放サイズを復帰命令[rtm3]のオペランドにて指定するようにオブジェクトコードファイル4を生成するので、CPU8が実行可能なプログラム100を生成することができる。加えて、そのオブジェクトコードファイル4のサイズを小さくすることができる。
【0049】
また、マイコン6は、コンパイラ2によって生成されたオブジェクトプログラムが記憶されるROM7を備えるので、CPU8は、そのオブジェクトプログラムを実行して高速に処理を行なうことができる。
【0050】
(第2実施例)
図9乃至図12は本発明の第2実施例を示すものであり、第1実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。図9は、コンパイラ2によるコンパイル処理の内容を、第2実施例にかかる部分のみ示すフローチャートである。
【0051】
第2実施例では、ユーザが、ソースコードファイル3中で割り込み処理のプログラムを記述する場合、それが、例外割り込み処理であるか、通常割り込み処理であるかをコンパイラ2に判別させるための記述を行なうようにする。ここで、例外割り込みとは、何らかのエラーが発生した場合にCPU8の内部で発生する割り込みであり、通常割り込みは、それ以外の優先順位が低い割り込みである。CPU8では、例外割り込み処理中に通常割り込みが発生してもマスクされるように構成されている。
【0052】
図10(a)に示す例外割り込み処理は、アドレスアクセスエラーが発行された場合の処理であり、そのプログラムの冒頭において、
#pragma interrupt(mon=0)
と記述されている。この内、最後の(mon=0)が例外割り込み処理を示す記述である。一方、図11(a)に示す通常割り込み処理は、タイマ割り込み処理であり、そのプログラムの冒頭において、
#pragma interrupt(mon=1)
と記述されている。この内、最後の(mon=1)が通常割り込み処理を示す記述である。
【0053】
ここで、図12には、CPU8の内部レジスタであるシステムレジスタ26のビット構成を示す。システムレジスタ26のビット1は、モニター中フラグMONとなっている。このフラグMONは、CPU8がユーザプログラムの実行中である場合は「0」にリセットされており、例外割り込み処理中である場合は、CPU8のハードウエアによって「1」にセットされる。
【0054】
フラグMONが「1」にセットされた場合、CPU8は、他の例外割り込み,通常割り込みの受付を禁止するようになっている。そして、従来のユーザプログラムでは、例外割り込み処理の実行が完了した場合は、フラグMONを「0」にリセットするように記述する必要があった。
そこで、第2実施例では、フラグMONを「0」にリセットする処理に代えて、例外割り込み処理の冒頭に(mon=0)を記述するように設定している。即ち、(mon=0,1)の記述によって、コンパイラ2は、その割り込み処理が例外割り込み,通常割り込みの何れに対応するものかを判別可能となっている。
【0055】
図9において、コンパイラ2は、ソースコードファイル3における割り込み処理プログラムの冒頭の記述が(mon=0)か、(mon=1)かを判定する(ステップS4)。(mon=0)であれば、例外割り込み処理であるから(ステップS5)、それに応じて復帰命令[rt03]を生成する(ステップS6)。一方、ステップS4において、冒頭の記述が(mon=1)であれば、通常割り込み処理であるから(ステップS7)、それに応じて復帰命令[rt13]を生成する(ステップS8)。
【0056】
その結果、コンパイルされたオブジェクトコードファイル4は、図10(b),図11(b)に示すように生成される。そして、CPU8は、復帰命令が[rt03]である場合は、フラグMONを「0」にリセットする処理をハードウエアで実行する。復帰命令が[rt13]である場合は、第1実施例と同様の復帰処理を行なう。
【0057】
以上のように第2実施例によれば、CPU8が有する例外割り込み処理,通常割り込み処理から復帰するための復帰命令を異なるものに設定し、復帰命令が例外割り込み処理[rt03]である場合は、システムレジスタ26のフラグMONを「0」にリセットする処理をハードウエアで実行する。従って、ユーザは、ソースコードファイル3中でフラグMONを「0」にリセットするための処理を記述する必要がなくなり、ユーザプログラム側の負担を軽減することが可能となる。
【0058】
また、コンパイラ2は、ソースコードファイル3中の(mon=0,1)の記述によって割り込み処理が、例外割り込み,通常割り込みの何れに対応するものかを判別し、夫々の割り込み処理からの復帰命令を異なるオブジェクトコード[rt03],[rt13]として生成する。従って、CPU8が異なる復帰命令を実行し分けることが可能なオブジェクトプログラムを生成することができる。そして、ユーザは、割り込み処理のプログラムを簡略化することが可能となる。
【0059】
(第3実施例)
図13乃至図15は本発明の第3実施例を示すものであり、第1実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。図15は、第3実施例のコンパイラ2によって生成される遅延分岐命令のビット構成を示すものである。CPU8の遅延分岐命令は、(a),(b),(c)の3タイプがある。
【0060】
図15(a)は1ワード(16ビット)の遅延分岐命令31であり、7ビットの命令部32と、1ビットの遅延処理選択部33と、8ビットのアドレス部34とで構成されている。図15(b)は2ワードの遅延分岐命令35であり、7ビットの命令部36と、1ビットの遅延処理選択部37と、24ビットのアドレス部38とで構成されている。図15(c)は1ワードの遅延分岐命令39であり、8ビットの命令部40と、2ビットの遅延処理選択部41と、2ビットのフラグ復帰選択部42と、4ビットのアドレス部43とで構成されている。
【0061】
第3実施例では、これらの遅延分岐命令31,35,39に、遅延処理選択部33,37,41が設けられていることが特徴である。CPU8は、この遅延処理選択部のビットの状態に応じて遅延分岐の流れを制御するように構成されている。
【0062】
図13は、コンパイラ2によるコンパイル処理の内容を、第3実施例にかかる部分のみ示すフローチャートであり、ソースコードファイル3中における分岐命令のコンパイル処理に関するものである。コンパイラ2は、オブジェクトとして生成しようとする命令が分岐命令であるか否かを判断し(ステップS11)、分岐命令で無ければ(「NO」)処理を終了する。一方、分岐命令である場合は(「YES」)、その分岐命令について遅延処理可能なワード数を判定する(ステップS12)。そのワード数が「0」であれば、処理を終了する。
【0063】
前記ワード数が「1」であれば、コンパイラ2は、当該分岐命令の直前の命令が1ワード命令であるか否かを判定し(ステップS13)、1ワード命令であれば(「YES」)、その直前の命令が、プログラムの流れで遅延処理が可能か否かを判定する(ステップS14)。遅延処理が可能である場合(「YES」)、直前の命令と分岐命令とを入れ替えると共に、分岐命令の遅延オプション(遅延分岐オプション)として遅延処理選択部33,37の何れかに「1」を設定する(ステップS15)。
【0064】
即ち、CPU8は、例えば、遅延分岐命令31をデコードした場合に遅延オプション「1」が設定されていると、その次には遅延処理可能な1ワード命令が配置されていることを判定する。この場合、オブジェクトコードファイル4中における命令の配置は、図14(a)に示すようになる。
【0065】
一方、直前の命令が1ワード命令でない場合、または、直前の命令が遅延処理不能であり、ステップS13,S14の何れかにおいてコンパイラ2が「NO」と判断すると、分岐命令の遅延オプションとして遅延処理選択部33等に「0」を設定する(ステップS16)。そして、CPU8は、デコードした場合に遅延オプション「0」が設定されていると、その次には遅延処理可能な命令が配置されていないことを判定する。この場合、オブジェクトコードファイル4中における命令の配置は、図14(b)に示すようになる。また、この場合の処理において分岐命令の次にnop命令を配置しないことが、第3実施例が従来技術と異なる大きな特徴の1つである。
【0066】
また、ステップS12において、遅延処理可能なワード数が「2」であった場合、コンパイラ2は、当該分岐命令の直前の命令が2ワード命令であるか否かを判定し(ステップS17)、2ワード命令であれば(「YES」)ステップS14と同様に、その直前の命令が、プログラムの流れで遅延処理が可能か否かを判定する(ステップS18)。遅延処理が可能である場合(「YES」)、直前の命令と分岐命令とを入れ替えると共に、分岐命令の遅延オプションとして遅延処理選択部41に「2」を設定する(ステップS19)。
【0067】
即ち、CPU8は、遅延分岐命令39をデコードした場合に遅延オプション「2」が設定されていると、その次には遅延処理可能な2ワード命令が配置されていることを判定する。この場合、オブジェクトコードファイル4中における命令の配置は、図14(c)に示すようになる。
【0068】
一方、直前の命令が遅延処理不能であり、ステップS18においてコンパイラ2が「NO」と判断すると、分岐命令の遅延オプションとして遅延処理選択部41に「0」を設定する(ステップS20)。
【0069】
また、直前の命令が2ワード命令でなく、ステップS17においてコンパイラ2が「NO」と判断すると、ステップS21に移行する。ステップS21〜S23,S27の処理は、基本的にステップS13〜S16の処理と同様であるが、遅延オプション1,0が設定されるのは遅延処理選択部41である。
【0070】
更に、コンパイラ2は、ステップS23を実行すると、再度ステップS21,S22と同様の判定を行なう(ステップS24,S25)。そして、何れも「YES」と判定すると、ステップS19と同様の処理を行なう(ステップS26)。また、何れも「NO」と判定すると処理を終了する。
【0071】
図16は、各分岐命令31,35,39について遅延オプション0〜2が設定された場合におけるCPU8のパイプライン処理状態を示すものである。(a)は、1ワード分岐命令31または39について遅延オプション=0が設定された場合であり、遅延スロットは使用されず、パイプライン▲2▼は、IFで停止する。(b)は、1ワード分岐命令31または39について遅延オプション=1が設定された場合であり、遅延スロットが使用されて、パイプライン▲2▼は、分岐命令31または39の次に配置された1ワード命令を実行する。
【0072】
(c)は、1ワード分岐命令39について遅延オプション=2が設定された場合であり、遅延スロットが使用されて、パイプライン▲2▼,▲3▼は、分岐命令39の次に配置された2ワード命令、若しくは2つの1ワード命令を実行する。(d)は、2ワード分岐命令35について遅延オプション=0が設定された場合であり、遅延スロットは使用されず、パイプライン▲3▼は停止する。(e)は、2ワード分岐命令35について遅延オプション=1が設定された場合であり、遅延スロットが使用されて、パイプライン▲3▼は、分岐命令35の次に配置された1ワード命令を実行する。
【0073】
以上のように第3実施例によれば、CPU8は、分岐命令31,35,39における、遅延オプションの設定に応じてプログラム分岐を行なうか否かを決定するので、分岐命令31等をデコードした段階で、当該命令については遅延分岐を行なわないことを判別できる。従って、そのようなケースでは、当該分岐命令の次にnop命令を配置する必要はなくなるので、オブジェクトコードサイズを小さくすることが可能となる。
【0074】
また、コンパイラ2は、分岐命令よりも前に記述されている命令が当該分岐命令の遅延スロットにて実行可能か否かを判定し、その実行可否に応じて遅延分岐オプションを設定すると共に、実行可能である場合は実行可能な命令を当該分岐命令の次に配置するので、CPU8が上記のように遅延分岐処理を実行可能なオブジェクトプログラムを生成することができる。
【0075】
(第4実施例)
図17乃至図23は本発明の第4実施例を示すものであり、第1実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。図17は、補助演算装置15の内部構成を示す機能ブロック図である。レジスタ部51は、第2データバス(汎用バス)14上に出力されるデータを、必要に応じてマルチプレクサ52を介して取り込むようになっている。レジスタ部51は、図18に示す複数のデータレジスタC0〜C29の集合として構成されている。これらのデータレジスタC0〜C29は、使用される組み合わせに応じて行なわれる演算の種類が決定されている。
【0076】
そして、命令デコーダ53は、CPU8によって第2アドレスバス(汎用バス)13に出力されるアドレス(即ち、補助演算装置15の内部レジスタを指定するアドレス)をデコードすることで、CPU8により指定された演算命令をデコードするようになっている。そして、そのデコード結果に応じて、レジスタ制御ユニット54に制御指令を出力し、レジスタ部51を制御する。また、命令デコーダ53は、演算部55の制御を行うシーケンサ56にも制御指令を出力するようになっている。
【0077】
演算部55は、レジスタ部51を介して与えられるデータについて演算を行なうようになっており、その演算結果は、マルチプレクサ52を介してレジスタ部51にフィードバックされる。また、レジスタ部51からの出力データは、第2データバス14に対しても出力可能となっている。
【0078】
また、命令デコーダ53は、CPU8によって専用命令信号COPが与えられている場合にのみ、デコード動作を行うように構成されている。また、シーケンサ56は、演算部55が演算実行中の状態でCPU8によるアクセスが行われた場合に、ウェイト信号CWTをCPU8に対して出力するようになっている。
【0079】
図19は、CPU8が備えている補助演算装置15に対する転送命令57のビット構成を示すものである。転送命令57は、6ビットの命令部58と、4ビットの第1オペランド部59と、6ビットの第2オペランド部60とで構成されている。そして、CPU8は、この転送命令57をデコードした場合は(即ち、パイプラインのステージDECにおいて)、割り込み処理の受付を禁止するように構成されている。
【0080】
また、図20は、CPU8の内部構成を概略的に示すものである。CPU8は、制御部20、演算部18、レジスタ部19、信号出力部61で構成されている。制御部20の内部には、デコーダ62と割り込み制御部63とが配置されている。デコーダ62は、命令のデコード結果に応じて信号出力部61と割り込み制御部63を制御するようになっている。また、デコーダ62は、補助演算装置15によってウェイト信号CWTが出力されると、パイプライン処理を一時停止させるように構成されている。そして、信号出力部61は、補助演算装置15に専用命令信号COPを出力する。
【0081】
次に、第4実施例の作用について図21乃至図23をも参照して説明する。図21は、制御部20のデコーダ62が行うデコード処理の内容を、第4実施例に係る部分だけ示すフローチャートである。デコーダ62は、デコード結果が補助演算装置15への転送命令か否かを判断し(ステップS31)、当該転送命令である場合は(「YES」) 割り込み制御部63に割り込み禁止信号を出力する(ステップS32)。また、パイプラインのステージがMEMに移行すると、信号出力部61によって専用命令信号COPを出力させる(ステップS33)。
【0082】
図22は、CPU8が補助演算装置15を用いた演算を行う場合に、コンパイラ2によって生成されたオブジェクトコードの一例である。[cmov]が、補助演算装置15に演算を行わせる場合に使用する専用命令である。即ち、▲1▼CPU8のレジスタr1のデータを補助演算装置15のレジスタC0に転送し、▲2▼レジスタr2のデータをレジスタC8に転送する。この場合の演算は符号付き8ビット乗算であり、その演算結果は、レジスタC0に格納される(図18参照)。従って、▲3▼レジスタC0の内容をレジスタr1に読み出す。
【0083】
図23は、図22のオブジェクトコードを実行する場合におけるパイプライン処理と、各信号の出力状態を示すものである。(a)に示すパイプライン▲1▼〜▲3▼は、図22のコードに対応している。パイプライン▲1▼のステージがMEMに移行すると、信号出力部61は専用命令信号COPを出力する。そして、CPU8においては、ステージDECがパイプライン▲1▼〜▲3▼まで連続するようになり、デコーダ62によって割り込み受付が禁止される。
【0084】
また、上記割り込み禁止期間が終了するとパイプライン▲2▼の外部アクセスMEMが行われ、その転送が終了すると補助演算装置15は乗算を開始する。そして、CPU8は、パイプライン▲3▼のステージEXEの次に、レジスタC0の内容をレジスタr1に読み出すためのステージMEMに移行するが、補助演算装置15のシーケンサ56は、命令デコーダ53を介してそのアクセスを認識する。
【0085】
この時、補助演算装置15は未だ演算を終了していないので、シーケンサ56は、CPU8に対してウェイト信号CWTをアクティブにする。すると、パイプライン▲3▼のステージはMEMに留まり一時停止状態となる。そして、補助演算装置15が演算を終了すると、ウェイト信号CWTはインアクティブとなり、パイプライン▲3▼のステージMEMが実行されて演算結果が読み出される。尚、CPU8に対する割り込みはパイプライン▲3▼のステージEXEから受付可能となるが、そのパイプライン▲3▼の処理が完了するまで割り込み処理は実行されない。
【0086】
以上のように第4実施例によれば、CPU8は、補助演算装置15だけがデコード可能となる専用命令[cmov]を備える。そして、その専用命令をデコードしている期間は割り込みの受付が禁止される。従って、CPU8に、その他の周辺回路などのデバイスが接続されている場合でも、補助演算装置15、その他デバイスによってアクセスされてしまうことを防止できる。
【0087】
また、デコーダ62によるデコード結果に基づいて、CPU8の割り込み制御部63が自動的に割り込み受付を禁止するので、ユーザが割り込み制御に関与する必要がなく、補助演算装置15側より割り込み禁止信号を出力する必要もない。従って、CPU8が補助演算装置15にアクセスする場合に、より簡単に割り込み受付を禁止させることができる。
【0088】
そして、コンパイラ2は、補助演算装置15に実行させるオブジェクトコードを生成する際に、補助演算装置15に対するアクセス命令が連続するように配置し、CPU8が補助演算装置15より演算結果を取得するまでの期間は割り込み処理が発生しないようにコンパイル処理する。従って、CPU8は、補助演算装置15を用いた演算処理を連続的に実行することができる。
【0089】
また、マイコン6は、CPU8と補助演算装置15とを汎用バス13,14を介して接続して構成した。そして、CPU8は、専用命令をデコードすると補助演算装置15に対して専用命令信号COPを出力し、補助演算装置15は、専用命令信号が出力されている場合に、CPU8によって与えられた演算命令をデコードする。従って、補助演算装置15は、その他のデバイスによって不用意にアクセスが行われることを確実に排除することができる。
【0090】
また、補助演算装置15は、演算実行中にCPU8によるアクセスが発生すると、CPU8が行なっている処理を一時停止させるためのウェイト信号CWTを出力し、CPU8は、ウェイト信号CWTが出力されている期間はパイプライン処理を停止する。従って、CPU8の割り込み処理の受付は、補助演算装置15の演算が終了するまで禁止され続けるようになる。
【0091】
(第5実施例)
図24乃至図26は、本発明の第5実施例を示すものである。図24は、コンパイラ2の第5実施例にかかる部分の処理内容を示すフローチャートである。第5実施例では、コンパイラ2は、コンパイル処理を行なう場合のユーザの設定に応じて、演算を第4実施例のように補助演算装置15を用いて行わせるか、或いは、図26に示すように、ROM7Aの内部に用意されたライブラリ64を使用して行なわせるかを選択することができるようになっている。
【0092】
図24は、乗算処理(例えば、a=b*c)を行う場合の例である。コンパイラ2は、乗算処理に対するユーザの指定を判定する(ステップS41)。ライブラリ64が指定された場合、コンパイラ2は、変数bの値をCPU8の汎用レジスタr4に転送するコードを生成し(ステップS42)、続いて、変数cの値を汎用レジスタr5に転送するコードを生成する(ステップS43)それから、ライブラリ64を呼び出すコードを生成する(ステップS44)。
【0093】
図25は、上述のようにして生成されたオブジェクトコードである。CPU8によってライブラリ64が呼び出されると、ライブラリ64によって乗算処理(a=b*c)が実行され、積aは、汎用レジスタr1にセットされる。従って、続くステップS45では、汎用レジスタr1の値を変数aに転送するようにコード生成する。
【0094】
一方、ユーザによって補助演算装置15を使用することが指定されると、第4実施例で図22に示したコードを生成するためのコンパイル処理がステップS46〜S51で行なわれる。即ち、変数bの値をCPU8の任意の汎用レジスタrxに転送するコードを生成し(ステップS46)、続いて、変数cの値を任意の汎用レジスタryに転送するコードを生成する(ステップS47)。それから、汎用レジスタrxの内容を、補助演算装置15のレジスタc0に転送するコードを生成し(ステップS48)、汎用レジスタryの内容を、レジスタc8に転送するコードを生成する(ステップS49)。そして、補助演算装置15のレジスタc0の内容を、任意の汎用レジスタrzに転送するコードを生成する(ステップS50)。最後に、汎用レジスタrzの内容を変数aに転送するようにコード生成する(ステップS51)。
【0095】
以上のように第5実施例によれば、コンパイラ2は、オブジェクトコードにおける演算処理を補助演算装置15に実行させるか、或いは、ライブラリ64によって行なわせるかを、ユーザの設定に応じてソースコードファイル3単位で選択可能であるから、ユーザは、演算を高速に処理したい場合は補助演算装置15を選択し、高速に処理する要請がない場合は、ライブラリ64を選択するようにコンパイル処理させることが可能となる。
【0096】
本発明は上記し且つ図面に記載した実施例にのみ限定されるものではなく、以下のような変形または拡張が可能である。
第2実施例において、通常割り込み処理で例外割り込み処理とは異なる独自の処理を行なう場合も、復帰命令の相違に応じてCPU8が実行するように構成しても良い。
第4実施例において、CPUが割り込みの受付を禁止する期間は、CPUの構成によってはパイプラインのステージEXEであっても良い。
【図面の簡単な説明】
【図1】本発明の第1実施例であり、コンパイラによるコンパイル処理の内容を、本実施例にかかる部分のみ示すフローチャート
【図2】(a)はコンパイラによってコンパイルされたプログラムにおける通常割り込み処理のフローチャート、(b)はそのプログラムをニモニック表現で示す図
【図3】割り込み復帰命令のビット構成を示す図
【図4】割り込み復帰命令をCPUが実行する場合のパイプライン処理を示す図
【図5】従来のコンパイル処理によるオブジェクトプログラムに基づいて復帰命令が実行される場合のパイプライン処理を示す図
【図6】プログラム変換装置の構成を示す図
【図7】コンパイラによるコンパイル処理を概念的示す図
【図8】ワンチップマイコンの電気的構成を示す機能ブロック図
【図9】本発明の第2実施例であり、コンパイラによるコンパイル処理の内容を、第2実施例にかかる部分のみ示すフローチャート
【図10】(a)は、例外割り込み処理のソースコードプログラム、(b)はそのオブジェクトコードプログラムを示す図
【図11】通常割り込み処理に関する図10相当図
【図12】CPUの内部レジスタであるシステムレジスタのビット構成を示す図
【図13】本発明の第3実施例であり、コンパイラによるコンパイル処理の内容を、第3実施例にかかる部分のみ示すフローチャート
【図14】図13の処理結果例を示す図
【図15】コンパイラによって生成される3タイプの遅延分岐命令のビット構成を示す図
【図16】各分岐命令について遅延オプション0〜2が設定された場合におけるCPUのパイプライン処理状態を示す図
【図17】本発明の第4実施例であり、補助演算装置の内部構成を示す機能ブロック図
【図18】補助演算装置によって実行される演算の種類と、その種類に応じたレジスタ設定の対応を示す図
【図19】CPUが備えている補助演算装置に対する転送命令のビット構成を示す図
【図20】CPUの内部構成を概略的に示す機能ブロック図
【図21】CPUの制御部におけるデコーダが行うデコード処理の内容を、第4実施例に係る部分だけ示すフローチャート
【図22】CPUが補助演算装置を用いた演算を行う場合に、コンパイラによって生成されたオブジェクトコードの一例を示す図
【図23】図22のオブジェクトコードを実行する場合におけるパイプライン処理と、各信号の出力状態を示す図
【図24】本発明の第5実施例であり、コンパイラの第5実施例にかかる部分の処理内容を示すフローチャート
【図25】図24の処理によって生成されたオブジェクトコードを示す図
【図26】図8相当図
【図27】従来技術を示す図2相当図
【図28】図14相当図
【符号の説明】
1はパーソナルコンピュータ、2はコンパイラ、3はソースコードファイル、4はオブジェクトコードファイル、6はマイクロコンピュータ、7,7AはROM(プログラムメモリ)、8はRISC型CPU、13は第2アドレスバス(汎用バス)、14は第2データバス(汎用バス)、15は補助演算装置、64はライブラリ、100はプログラムを示す。
Claims (14)
- 割り込み処理から通常処理に復帰する際にスタック領域を開放する必要がある場合、その開放サイズがオペランドにて指定されている復帰命令を有することを特徴とするRISC型CPU。
- 例外割り込み処理または通常割り込み処理から通常処理に復帰する際に、何れか一方については他方と異なる処理を実行するように構成されていると共に、夫々の割り込み処理について異なる復帰命令を有することを特徴とするRISC型CPU。
- ソースプログラムにおいて、割り込み処理から通常処理に復帰する際にスタック領域を開放する必要がある場合、その開放サイズを復帰命令のオペランドにて指定するようにオブジェクトコードを生成することを特徴とするコンパイラ。
- 少なくとも、例外割り込み,通常割り込みの何れについての割り込み処理であるかが判別可能な形式で記述されているソースプログラムに基づいて、夫々の割り込み処理からの復帰命令を異なるオブジェクトコードとして生成することを特徴とするコンパイラ。
- その次に記述されている命令を実行するか否かを判別するための遅延分岐オプションを有する分岐命令を有し、前記遅延分岐オプションの設定に応じてプログラム分岐を行なうか否かを決定するように構成されていることを特徴とするRISC型CPU。
- ソースプログラムにおいて、分岐命令よりも前に記述されている命令が当該分岐命令の遅延スロットにて実行可能か否かを判定し、
実行可能である場合は「遅延処理あり」を示す遅延分岐オプションを当該分岐命令中に設定すると共に実行可能な命令を当該分岐命令の次に配置し、
実行不能である場合は「遅延処理なし」を示す遅延分岐オプションを当該分岐命令中に設定するようにオブジェクトコードを生成することを特徴とするコンパイラ。 - 補助演算装置にアクセスするための命令を、当該補助演算装置だけがデコード可能となる専用命令として備え、前記専用命令をデコード若しくは実行している期間は割り込みの受付が禁止されるように構成されていることを特徴とするRISC型CPU。
- 請求項7記載のRISC型CPUによって実行されるオブジェクトコードを生成するためのコンパイラにおいて、
前記オブジェクトコードにおける演算処理を、前記補助演算装置に実行させるか、或いは、ライブラリによって行なわせるかを、ユーザの設定に応じてソースファイル単位で選択可能であることを特徴とするコンパイラ。 - 前記補助演算装置に実行させるオブジェクトコードを生成する際に、当該補助演算装置に対するアクセス命令が連続するように配置することで、前記CPUが当該補助演算装置より演算結果を取得するまでの期間は割り込みの受付が禁止されるようにコンパイル処理することを特徴とする請求項8記載のコンパイラ。
- 請求項7記載のRISC型CPUと、
このCPUとバスを介して接続される補助演算装置とを備えて構成されることを特徴とするマイクロコンピュータ。 - 前記RISC型CPUと、補助演算装置とは、汎用バスを介して接続されており、
前記CPUは、前記専用命令をデコードすると、当該補助演算装置に対して専用命令信号を出力するように構成され、
前記補助演算装置は、前記専用命令信号が出力されている場合に、前記CPUによって与えられた演算命令をデコードするように構成されていることを特徴とする請求項10記載のマイクロコンピュータ。 - 前記補助演算装置は、演算実行中に前記RISC型CPUによるアクセスが発生すると、前記CPUが行なっている処理を一時停止させるための停止信号を出力し、
前記CPUは、前記停止信号が出力されている期間はパイプライン処理を停止させるように構成されていることを特徴とする請求項10または11記載のマイクロコンピュータ。 - 請求項3,4,6,8及び9記載のコンパイラによって生成されたオブジェクトプログラムが記憶されるプログラムメモリを備えたことを特徴とする請求項10乃至12の何れかに記載のマイクロコンピュータ。
- 請求項10乃至13の何れかに記載のマイクロコンピュータに搭載されることを特徴とする補助演算装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002374527A JP2004206389A (ja) | 2002-12-25 | 2002-12-25 | Risc型cpu,コンパイラ,マイクロコンピュータ及び補助演算装置 |
US10/744,650 US20040153636A1 (en) | 2002-12-25 | 2003-12-23 | RISC type of CPU and compiler to produce object program executed by the same |
DE10361255A DE10361255A1 (de) | 2002-12-25 | 2003-12-24 | CPU vom Typ RISC und Compiler zur Erzeugung eines Objektprogramms, das von derselben ausgeführt wird |
US11/998,966 US20080104370A1 (en) | 2002-12-25 | 2007-12-03 | RISC type of CPU and compiler to produce object program executed by the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002374527A JP2004206389A (ja) | 2002-12-25 | 2002-12-25 | Risc型cpu,コンパイラ,マイクロコンピュータ及び補助演算装置 |
Related Child Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007207929A Division JP2007317230A (ja) | 2007-08-09 | 2007-08-09 | Risc型cpu,コンパイラ及びマイクロコンピュータ |
JP2007207930A Division JP2007287186A (ja) | 2007-08-09 | 2007-08-09 | Risc型cpu,コンパイラ及びマイクロコンピュータ |
JP2007207931A Division JP2007317231A (ja) | 2007-08-09 | 2007-08-09 | Risc型cpu,コンパイラ,マイクロコンピュータ及び補助演算装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004206389A true JP2004206389A (ja) | 2004-07-22 |
Family
ID=32652680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002374527A Pending JP2004206389A (ja) | 2002-12-25 | 2002-12-25 | Risc型cpu,コンパイラ,マイクロコンピュータ及び補助演算装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US20040153636A1 (ja) |
JP (1) | JP2004206389A (ja) |
DE (1) | DE10361255A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020137879A (ja) * | 2019-02-28 | 2020-09-03 | 株式会社ソフイア | 遊技機 |
JP2020137871A (ja) * | 2019-02-28 | 2020-09-03 | 株式会社ソフイア | 遊技機 |
JP2021112460A (ja) * | 2020-01-21 | 2021-08-05 | 株式会社ソフイア | 遊技機 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4148223B2 (ja) * | 2005-01-28 | 2008-09-10 | セイコーエプソン株式会社 | プロセッサおよび情報処理方法 |
US8291393B2 (en) * | 2007-08-20 | 2012-10-16 | International Business Machines Corporation | Just-in-time compiler support for interruptible code |
US8484647B2 (en) * | 2009-07-24 | 2013-07-09 | Apple Inc. | Selectively adjusting CPU wait mode based on estimation of remaining work before task completion on GPU |
US20110131396A1 (en) * | 2009-12-01 | 2011-06-02 | Xmos Limited | Timing analysis |
CN113886862B (zh) * | 2021-12-06 | 2022-04-15 | 粤港澳大湾区数字经济研究院(福田) | 一种可信计算系统及基于可信计算系统的资源处理方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5440747A (en) * | 1993-09-27 | 1995-08-08 | Hitachi America, Ltd. | Data processor with control logic for storing operation mode status and associated method |
TW360852B (en) * | 1995-04-12 | 1999-06-11 | Matsushita Electric Ind Co Ltd | Pipeline processor |
JP3745039B2 (ja) * | 1996-08-01 | 2006-02-15 | 株式会社ルネサステクノロジ | 遅延命令を有するマイクロプロセッサ |
US6212630B1 (en) * | 1997-12-10 | 2001-04-03 | Matsushita Electric Industrial Co., Ltd. | Microprocessor for overlapping stack frame allocation with saving of subroutine data into stack area |
-
2002
- 2002-12-25 JP JP2002374527A patent/JP2004206389A/ja active Pending
-
2003
- 2003-12-23 US US10/744,650 patent/US20040153636A1/en not_active Abandoned
- 2003-12-24 DE DE10361255A patent/DE10361255A1/de not_active Withdrawn
-
2007
- 2007-12-03 US US11/998,966 patent/US20080104370A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020137879A (ja) * | 2019-02-28 | 2020-09-03 | 株式会社ソフイア | 遊技機 |
JP2020137871A (ja) * | 2019-02-28 | 2020-09-03 | 株式会社ソフイア | 遊技機 |
JP7045074B2 (ja) | 2019-02-28 | 2022-03-31 | 株式会社ソフイア | 遊技機 |
JP2021112460A (ja) * | 2020-01-21 | 2021-08-05 | 株式会社ソフイア | 遊技機 |
Also Published As
Publication number | Publication date |
---|---|
US20080104370A1 (en) | 2008-05-01 |
DE10361255A1 (de) | 2004-07-29 |
US20040153636A1 (en) | 2004-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9652241B2 (en) | Data processing apparatus with instruction encodings to enable near and far memory access modes | |
JP3499252B2 (ja) | コンパイル装置及びデータ処理装置 | |
JP2834837B2 (ja) | プログラマブルコントローラ | |
EP0996057B1 (en) | Data processor with an instruction unit having a cache and a ROM | |
CN101965554B (zh) | 选择性地提交已执行指令的结果的系统和方法 | |
JP3856737B2 (ja) | データ処理装置 | |
JPH03129433A (ja) | 並列処理装置および並列処理方法 | |
US5907694A (en) | Data processing apparatus for performing a pipeline operation on a load and extension instruction | |
US20080104370A1 (en) | RISC type of CPU and compiler to produce object program executed by the same | |
JPH03158928A (ja) | データ処理装置 | |
JP2007287186A (ja) | Risc型cpu,コンパイラ及びマイクロコンピュータ | |
JP4800582B2 (ja) | 演算処理装置 | |
JPH08255476A (ja) | データ処理システムにおけるメモリ拡張スタック装置および方法 | |
JP2007317231A (ja) | Risc型cpu,コンパイラ,マイクロコンピュータ及び補助演算装置 | |
JP2007317230A (ja) | Risc型cpu,コンパイラ及びマイクロコンピュータ | |
JP2002157115A (ja) | データ処理装置 | |
JPH02105937A (ja) | データ処理装置 | |
JP2636821B2 (ja) | 並列処理装置 | |
JP7276755B2 (ja) | 処理速度整合回路およびマイクロプロセッサ | |
JP2003196085A (ja) | 情報処理装置 | |
JP2006302324A (ja) | データ処理装置 | |
JP3539914B2 (ja) | マイクロコンピュータ | |
JP2003162411A (ja) | データプロセッサ | |
JP2559929B2 (ja) | プログラマブルコントローラ | |
JP2927281B2 (ja) | 並列処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050701 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070608 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070619 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070809 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071030 |