JP2002073332A - Operation executing device and its method - Google Patents

Operation executing device and its method

Info

Publication number
JP2002073332A
JP2002073332A JP2000255594A JP2000255594A JP2002073332A JP 2002073332 A JP2002073332 A JP 2002073332A JP 2000255594 A JP2000255594 A JP 2000255594A JP 2000255594 A JP2000255594 A JP 2000255594A JP 2002073332 A JP2002073332 A JP 2002073332A
Authority
JP
Japan
Prior art keywords
result
read
interrupt
register
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.)
Pending
Application number
JP2000255594A
Other languages
Japanese (ja)
Inventor
Kenji Matsumoto
松本  健志
Original Assignee
Sanyo Electric 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 Sanyo Electric Co Ltd, 三洋電機株式会社 filed Critical Sanyo Electric Co Ltd
Priority to JP2000255594A priority Critical patent/JP2002073332A/en
Publication of JP2002073332A publication Critical patent/JP2002073332A/en
Pending legal-status Critical Current

Links

Abstract

PROBLEM TO BE SOLVED: To make interrupt operation of a co-processor possible when an interrupt is demanded while the co-processor is operating. SOLUTION: The co-processor 50 has a FIFO memory which can store plural operation results at one time, and a memory which saves a reading out position of the memory at the interrupt demand and saves an operator whose result is not read out yet although it is already being operated. At the interrupt process, the interrupt is operated while the reading out position and the operator of the process before the interrupt are saved, and the previous operation is continued using the saved reading out position and the operator after the interruption.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION
【0001】[0001]
【発明の属する技術分野】本発明は演算実行装置及び方
法、特に割込処理の実行に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to an arithmetic execution apparatus and method, and more particularly to execution of interrupt processing.
【0002】[0002]
【従来の技術】RISC(Reduced Instruction Set Co
mputer)型のシングルチップマイクロプロセッサは、高
い処理性能、低い消費電力及び少ない実装面積を同時に
達成するためのデバイスであり、近年では、さらに演算
性能の強化を図るために、通常の演算部(ALU)とは
別に、専用の演算回路(コプロセッサ(単に「コプロ」
と称する))を設ける場合がある。このようにプロセッ
サとコプロとを用いて演算処理を実行するシステムにお
いて、コプロ演算実行と割込処理(あるいは例外処理)
要求とが同時に発生した場合の制御方法として、主に3
つの方法がある。すなわち、 (1)例外処理を待たせる 一旦コプロ演算が起動されたとき、この演算の実行が完
了するまで割込処理を待たせ、演算完了後に割込処理を
実行する。
2. Description of the Related Art RISC (Reduced Instruction Set Co)
A single-chip microprocessor of the mputer type is a device that simultaneously achieves high processing performance, low power consumption, and a small mounting area. In recent years, in order to further enhance the arithmetic performance, a normal arithmetic unit (ALU) has been used. ), Separate from the dedicated arithmetic circuit (coprocessor (just "copro"
)) May be provided. Thus, in a system that executes arithmetic processing using a processor and a coprocessor, execution of a coprocessor operation and interrupt processing (or exception processing)
As a control method when a request and a request occur simultaneously, mainly 3
There are two ways. (1) Waiting for exceptional processing Once the coprocessor operation is started, the interrupt processing is made to wait until the execution of this operation is completed, and the interrupt processing is executed after the completion of the operation.
【0003】(2)コプロ演算を中止する 割込処理を優先するためにコプロ演算を中止し、演算の
途中経過を破棄する。割込処理の完了後、コプロ演算を
最初からやりなおす。
[0003] (2) Stop the co-pro operation The co-pro operation is stopped to give priority to the interrupt processing, and the progress of the operation is discarded. After the completion of the interrupt processing, the coprocessor operation is restarted from the beginning.
【0004】(3)コプロ演算を中断する コプロ演算を一旦中断し、演算の途中経過を待避する。
割込処理の完了後、待避したデータを読み戻し、コプロ
演算を中途から再開する。
(3) Interrupting the co-pro operation The co-pro operation is temporarily interrupted, and the progress of the operation is saved.
After the completion of the interrupt processing, the saved data is read back, and the coprocessor operation is restarted halfway.
【0005】但し、これら(1)〜(3)の方法にはそ
れぞれ以下のような欠点がある。
However, these methods (1) to (3) have the following disadvantages.
【0006】(1)設計上最も単純でハードウェアも少
ないが、急を要する割込処理が長時間待たされるおそれ
がある。
(1) Although the design is the simplest and the hardware is small, there is a possibility that the urgent interrupt processing is kept waiting for a long time.
【0007】(2)演算が最初からやりなおしになるた
め無駄となる。
(2) The calculation is redone from the beginning and is useless.
【0008】(3)実装のためのハードウェアが大きく
なる。
(3) Hardware for mounting increases.
【0009】そこで、このような問題点を解消するた
め、特開平9−292993号公報には、以下のような
演算実行方法が記載されている。すなわち、演算の起動
を指示する演算起動命令と、その演算の結果を取り出す
演算結果取出命令とを別々に設け、演算起動命令により
起動された演算の実行完了をハードウェアにより判定
し、その演算の実行が完了するまで、後続の演算結果取
出命令の実行を廃棄可能な状態で停止する。したがっ
て、割込処理の要求が発生した場合、停止中の演算結果
取出命令を廃棄して、割込処理を優先的に実行すること
ができる。コプロ演算自体は必ずしも中止する必要はな
く、割込処理を終えた後に、演算結果取出命令を適当な
タイミングで再度実行することで、演算結果も利用する
ことが可能となる。
Therefore, in order to solve such a problem, Japanese Patent Laid-Open No. 9-292993 discloses the following method of executing an operation. That is, an operation start instruction for instructing the start of an operation and an operation result extraction instruction for extracting the result of the operation are separately provided, and execution completion of the operation started by the operation start instruction is determined by hardware. Until the execution is completed, the execution of the subsequent operation result fetch instruction is stopped in a disposable state. Therefore, when an interrupt processing request is generated, the stopped operation result fetch instruction can be discarded, and the interrupt processing can be executed with priority. It is not always necessary to stop the coprocessor operation itself, and by executing the operation result fetch instruction again at an appropriate timing after completing the interrupt processing, the operation result can be used.
【0010】[0010]
【発明が解決しようとする課題】しかしながら、この方
法では割込処理受付前に起動されたコプロ演算の結果を
読み出す前に割込処理を優先的に処理しているため、割
込処理自体でコプロ演算が必要となる場合に対応するこ
とが困難である問題があった。具体的には、既に実行さ
れていたコプロ演算の途中結果及び結果が新たに起動さ
れたコプロ演算の実行により上書きされてしまう問題が
生じ得る。このため、プログラマは、割込処理ではコプ
ロ演算を行わないように配慮してプログラムを作成する
必要があった。
However, in this method, the interrupt processing is preferentially performed before reading the result of the copro operation started before the acceptance of the interrupt processing. There is a problem that it is difficult to cope with a case where an operation is required. Specifically, a problem may occur in which the intermediate result and the result of the already executed copro operation are overwritten by the execution of the newly activated copro operation. For this reason, the programmer has to create a program in consideration of not performing the co-processor operation in the interrupt processing.
【0011】本発明は、上記従来技術の有する課題に鑑
みなされたものであり、その目的は、コプロ演算実行中
に割込処理(あるいは例外処理)が生じた場合でも割込
処理を待たせることなく処理できるとともに、この割込
処理自体がコプロ演算を必要とする場合においても対応
することが可能な装置及び方法を提供することにある。
SUMMARY OF THE INVENTION The present invention has been made in consideration of the above-mentioned problems of the related art, and has as its object to allow an interrupt process (or an exception process) to wait even if an interrupt process (or an exception process) occurs during execution of a coprocessor operation. It is an object of the present invention to provide an apparatus and a method which can perform processing without interruption and can cope with a case where the interrupt processing itself requires a co-processor operation.
【0012】[0012]
【課題を解決するための手段】上記目的を達成するため
に、本発明は、演算部とは別個に演算を行う第2演算部
を備えた演算実行装置であって、前記第2演算部は、演
算結果を同時に複数個記憶できるデータ記憶手段と、前
記記憶手段からのデータ読み出し位置を記憶する読み出
し位置記憶手段と、起動され未だその演算結果が読み出
されていない演算数を記憶する起動演算数記憶手段と、
割込要求があったときに前記読み出し位置記憶手段に記
憶された読み出し位置及び前記起動演算数記憶手段に記
憶された演算数を待避させる手段とを有し、割込処理を
実行して得られる演算結果を読み出した後に前記待避さ
せる手段に待避させた前記読み出し位置及び演算数を前
記読み出し位置記憶手段及び前記起動演算数記憶手段に
戻し、これらのデータに基づいて演算を実行することを
特徴とする。割込要求の前の状態を待避させて割込処理
を実行し、割込処理完了後に待避させた状態に基づいて
もとの演算を続行することで、割込演算を直ちに行うと
ともに割込前の演算に迅速に復帰することができる。な
お、待避させた読み出し位置及び演算数に基づいて演算
を実行するとは、具体的にはこれらのデータによってデ
ータ記憶手段への演算結果書き込み位置と読み出し位置
を調整し、演算結果を損なうことなく元の演算を実行す
ることを意味する。
According to another aspect of the present invention, there is provided an arithmetic execution apparatus including a second arithmetic unit for performing an arithmetic operation separately from an arithmetic unit. A data storage means capable of simultaneously storing a plurality of operation results, a read position storage means for storing a data read position from the storage means, and a start operation for storing the number of operations which have been started but whose operation results have not been read. Number storage means,
Means for evacuating the read position stored in the read position storage means and the operation number stored in the start operation number storage means when an interrupt request is issued, and obtained by executing an interrupt process. After reading out the operation result, the read-out position and the number of operations saved by the saving unit are returned to the read-out position storage unit and the starting operation number storage unit, and the operation is executed based on these data. I do. By executing the interrupt processing by saving the state before the interrupt request and continuing the original operation based on the saved state after the completion of the interrupt processing, the interrupt operation is immediately performed and the Can be quickly returned to the calculation. To execute the operation based on the evacuated read position and the number of operations, specifically, the operation result write position and the read position in the data storage unit are adjusted with these data, and the original result is maintained without impairing the operation result. To perform the operation of
【0013】ここで、前記割込要求があったときに前記
読み出し位置を前記演算数に基づいて変更する手段を更
に有し、前記割込処理を実行して得られる演算結果を前
記変更する手段で変更された読み出し位置に基づいて読
み出すことが好適である。
Here, the apparatus further comprises means for changing the read position based on the number of operations when the interrupt request is received, and means for changing the operation result obtained by executing the interrupt processing. It is preferable that the reading is performed based on the reading position changed in the above.
【0014】また、前記割込処理を実行して得られる演
算結果を読み出した後に前記データ記憶手段に演算結果
を書き込む位置を、前記待避させる手段から戻した後の
前記演算数及び前記読み出し位置に応じて変更する手段
とを更に有することが好適である。
Further, the position at which the operation result is written in the data storage unit after the operation result obtained by executing the interrupt processing is read out is stored in the operation number and the read position after returning from the saving unit. It is preferable to further include means for changing according to the situation.
【0015】また、本装置において、前記割込要求があ
ったときに前記演算数をリセットする手段とを有するこ
ともできる。リセットすることにより、割込処理におけ
る演算数を正確に把握することが可能とする。
[0015] The apparatus may further comprise means for resetting the operation number when the interrupt request is issued. By resetting, the number of operations in the interrupt processing can be accurately grasped.
【0016】また、本装置において、前記演算数が前記
データ記憶手段のデータ記憶個数に達したときに前記第
2演算部での新たな演算を禁止する手段とを有すること
もできる。演算数がデータ記憶手段のデータ記憶個数に
達したときには、記憶されている演算結果を読み出さな
い限り新たな演算結果を書き込むことができない(書き
込むと上書きされてしまい、演算結果が損なわれる)。
そこで、このときには第2演算部での新たな演算を禁止
することで、演算結果を確実に読み出すことが可能とな
る。
The apparatus may further include means for prohibiting a new operation in the second operation unit when the number of operations reaches the number of data stored in the data storage means. When the number of operations reaches the number of data stored in the data storage means, a new operation result cannot be written unless the stored operation result is read out (writing overwrites the operation result, thereby impairing the operation result).
Therefore, at this time, by prohibiting a new operation in the second operation unit, the operation result can be reliably read.
【0017】本装置のデータ記憶手段は、FIFOメモ
リで構成することができる。
The data storage means of the present apparatus can be constituted by a FIFO memory.
【0018】また、前記待避させる手段は、前記読み出
し位置及び演算数の組を同時に複数組記憶できる手段を
含み、前記割込処理を実行して得られる演算結果を読み
出す前に第2の割込要求があったときに前記割込処理に
おける前記読み出し位置及び演算数をさらに待避させる
ことも好適である。これにより、割込要求の後にさらに
割込要求がなされる多重割込にも対応することが可能と
なる。
Further, the means for saving includes means for simultaneously storing a plurality of sets of the read position and the number of operations, and a second interrupt before reading the operation result obtained by executing the interrupt processing. It is also preferable that the read position and the number of operations in the interrupt processing are further saved when a request is made. Thereby, it is possible to cope with a multiple interrupt in which an interrupt request is further made after the interrupt request.
【0019】また、本発明は、プロセッサとは別個に設
けられたコプロセッサで演算を実行する方法を提供す
る。この方法は、前記コプロセッサでの演算実行中に割
込要求があったときに、起動され未だその演算結果が読
み出されていない演算数及び前記コプロセッサ内の演算
結果メモリからの読み出し位置を待避させるステップ
と、前記コプロセッサで前記割込要求による割込演算を
実行するステップと、前記割込演算の結果を読み出した
後に、待避させた前記演算数及び読み出し位置に基づい
て前記割込要求前の演算を続行するステップとを有す
る。
The present invention also provides a method for executing an operation by a coprocessor provided separately from the processor. According to this method, when an interrupt request is issued during execution of an operation in the coprocessor, the number of operations that have been started and the operation result of which has not yet been read, and the read position from the operation result memory in the coprocessor are determined. Saving the interrupt request, executing the interrupt operation by the interrupt request in the coprocessor, reading the result of the interrupt operation, and then reading the interrupt request based on the saved operation number and the read position. Continuing the previous operation.
【0020】ここで、前記割込要求があったときに、前
記読み出し位置を前記演算数だけ変更することで前記割
込演算の結果を読み出すことが好適である。
Here, it is preferable that when the interrupt request is issued, the result of the interrupt operation is read by changing the read position by the operation number.
【0021】また、前記割込演算の結果を読み出した後
に、前記コプロセッサ内の演算結果メモリへの書き込み
位置を前記待避させた前記読み出し位置から前記演算数
の個数分シフトさせた位置に変更して演算結果を書き込
むことが好適である。
After reading the result of the interrupt operation, the write position in the operation result memory in the coprocessor is changed from the evacuated read position to a position shifted by the number of operations. It is preferable to write the result of the calculation.
【0022】本方法において、前記割込要求があったと
きに、前記演算数をリセットすることができる。
In this method, the number of operations can be reset when the interrupt request is made.
【0023】また、本方法において、前記演算数が所定
数に達したことを検出するステップと、前記所定数に達
した場合に新たな演算結果の読み出しが完了するまで前
記コプロセッサでの新たな演算を禁止するステップとを
さらに有することもできる。
The method may further comprise the step of detecting that the number of operations has reached a predetermined number, and, if the number has reached the predetermined number, a new operation in the coprocessor until reading of a new operation result is completed. Prohibiting the operation.
【0024】[0024]
【発明の実施の形態】以下、図面に基づき本発明の実施
形態について説明する。
Embodiments of the present invention will be described below with reference to the drawings.
【0025】図1には、本実施形態に係る演算実行装置
の全体構成が示されている。本装置は、通常の処理を統
括的に行うプロセッサ40,コプロセッサ50,プロセ
ッサ40が実行すべき命令を格納する命令メモリ1、プ
ロセッサ40による処理の対象となるデータを格納する
データメモリ19を含んで構成される。命令は、命令メ
モリバス2を介してプロセッサ40に取り込まれる。一
方、データはデータメモリバス18を介してプロセッサ
40との間でリードライトされる。
FIG. 1 shows the overall configuration of an arithmetic execution device according to this embodiment. This apparatus includes a processor 40 for performing general processing, a coprocessor 50, an instruction memory 1 for storing instructions to be executed by the processor 40, and a data memory 19 for storing data to be processed by the processor 40. It consists of. The instruction is taken into the processor 40 via the instruction memory bus 2. On the other hand, data is read / written to / from the processor 40 via the data memory bus 18.
【0026】プロセッサ40内には、命令メモリ1から
命令を取り出す命令フェッチ部3、命令フェッチ部3か
ら命令語を受け取り、これを解読する命令デコード部5
が設けられている。
In the processor 40, an instruction fetch unit 3 for fetching an instruction from the instruction memory 1, an instruction decode unit 5 for receiving an instruction word from the instruction fetch unit 3 and decoding it.
Is provided.
【0027】命令デコード部5では、命令の種類にした
がって命令語のデコードを行い、処理すべき演算の機能
を示す機能コード6a、命令語内の即値オペランド6
b、2個のソースレジスタ番号6c、6d、デスティネ
ーションレジスタ番号6eなどを抽出する。
The instruction decoding unit 5 decodes the instruction word according to the type of the instruction, a function code 6a indicating the function of the operation to be processed, and an immediate operand 6 in the instruction word.
b, two source register numbers 6c and 6d, a destination register number 6e, and the like are extracted.
【0028】ソースレジスタ番号6c、6dは汎用レジ
スタ群7に供給される。汎用レジスタ群7からはソース
レジスタ番号6c、6dに対応するレジスタの内容が取
り出され、これらがソースオペランド8a、8bとして
演算部11に供給される。演算部11はALUとして機
能する。
The source register numbers 6c and 6d are supplied to the general-purpose register group 7. The contents of the registers corresponding to the source register numbers 6c and 6d are extracted from the general-purpose register group 7, and are supplied to the arithmetic unit 11 as source operands 8a and 8b. The operation unit 11 functions as an ALU.
【0029】一方、機能コード6aはパイプライン制御
部9に供給される。パイプライン制御部9は、装置全体
の状態を監視し、ステージ進行(命令フェッチステー
ジ、命令解読ステージ、ALU演算ステージ、メモリア
クセスステージ及びレジスタ書込ステージ)を制御し、
個々の命令の発行時期を決定する。命令が発行可能な時
期にきたとき、機能コード6aは機能コード10aとし
て演算部11に送られる。演算部11では、汎用レジス
タから得られたソースオペランド8a、8b及び即値オ
ペランド6bのうち必要な値を用い、パイプライン制御
部9から与えられる機能コード10aにしたがって演算
を行う。
On the other hand, the function code 6a is supplied to the pipeline control unit 9. The pipeline control unit 9 monitors the state of the entire device, controls the stage progress (instruction fetch stage, instruction decoding stage, ALU operation stage, memory access stage, and register write stage),
Determine when each instruction will be issued. When it is time to issue an instruction, the function code 6a is sent to the arithmetic unit 11 as a function code 10a. The operation unit 11 performs an operation in accordance with the function code 10a given from the pipeline control unit 9 by using necessary values among the source operands 8a and 8b and the immediate operand 6b obtained from the general-purpose registers.
【0030】命令が演算命令の場合、命令に示された演
算が実行され、演算結果16は演算結果保持部13に格
納される。そして、演算結果は汎用レジスタ書込制御部
15を介して汎用レジスタ群7に送られる。汎用レジス
タ書込制御部15は、パイプライン制御部9から得られ
たデスティネーションレジスタ番号10bを用いて汎用
レジスタ群7への書込操作を行う。また、命令がメモリ
アクセス命令の場合、アクセスすべきメモリアドレスの
計算が演算部11で実行される。得られたメモリアドレ
ス12はデータメモリアクセス制御部14に送られる。
データメモリアクセス制御部14は、データメモリバス
18を介してデータメモリ19のリードライトを行う。
When the instruction is an operation instruction, the operation indicated by the instruction is executed, and the operation result 16 is stored in the operation result holding unit 13. Then, the operation result is sent to the general-purpose register group 7 via the general-purpose register write control unit 15. The general-purpose register write control unit 15 performs a write operation on the general-purpose register group 7 using the destination register number 10b obtained from the pipeline control unit 9. When the instruction is a memory access instruction, the calculation of the memory address to be accessed is executed by the arithmetic unit 11. The obtained memory address 12 is sent to the data memory access control unit 14.
The data memory access control unit 14 reads and writes the data memory 19 via the data memory bus 18.
【0031】プロセッサ40はさらに、外部割込信号2
8を入力する割込信号入力部27を有する。割込信号が
入力されたとき、これがパイプライン制御部9に通知さ
れる。
The processor 40 further includes an external interrupt signal 2
8 is provided. When an interrupt signal is input, this is notified to the pipeline control unit 9.
【0032】プロセッサ40がコプロ50に演算の実行
を指示する際、演算起動命令と演算結果取出命令とを別
々に行う。演算起動命令は、単にコプロ50に対するデ
ータ転送命令とし、データが転送されるとコプロ50で
は所定の演算、例えば乗算や除算、浮動小数点演算等が
実行される。また、演算結果取出命令は、コプロ50か
らの読み出し命令とすることができる。演算起動命令後
に、プロセッサ40が割込処理を受け付けると、コプロ
50は演算を実行しつつ、プロセッサでこの割込処理を
実行する。一方、割込処理自体がコプロ50での演算を
必要とする場合、プロセッサ40はコプロ50に対して
再び演算起動命令を指示し、演算を実行させる。本実施
形態では、後述のようにコプロ50が構成されているた
め、割込処理自体にコプロ演算が要求された場合でも、
演算結果を上書きすることなく演算結果をプロセッサ4
0に出力することが可能である。
When the processor 40 instructs the coprocessor 50 to execute an operation, the processor 40 separately executes an operation start instruction and an operation result extraction instruction. The operation start instruction is simply a data transfer instruction to the copro 50, and when the data is transferred, the copro 50 executes a predetermined operation such as multiplication, division, or floating point operation. Further, the operation result fetch instruction may be a read instruction from the coprocessor 50. When the processor 40 accepts the interrupt process after the operation start instruction, the coprocessor 50 executes the interrupt process by the processor while executing the operation. On the other hand, if the interrupt processing itself requires an operation in the co-processor 50, the processor 40 instructs the co-pro 50 again with an operation start instruction to execute the operation. In the present embodiment, since the copro 50 is configured as described below, even when a copro operation is required for the interrupt processing itself,
The processor 4 outputs the calculation result without overwriting the calculation result.
It is possible to output 0.
【0033】図2には、図1におけるコプロ50の構成
図が示されている。コプロ50は、演算部(ALU)5
0a、演算結果保持メモリ50b、スタックメモリ50
c、書込レジスタ(書込ポインタ)50d、読み出しレ
ジスタ(読み出しレジスタ)50e及び起算演算個数レ
ジスタ50fを有して構成される。
FIG. 2 shows a configuration diagram of the copro 50 in FIG. The copro 50 includes an arithmetic unit (ALU) 5
0a, operation result holding memory 50b, stack memory 50
c, a write register (write pointer) 50d, a read register (read register) 50e, and a start operation number register 50f.
【0034】演算結果保持メモリ50bは、プロセッサ
40からの指示に基づいて演算部50aで得られた演算
結果を保持するもので、同時に複数の演算結果を保持す
るために複数のメモリ領域を有している。本実施形態に
おける演算結果保持メモリ50bのメモリ段は7段(同
時に7個の演算結果を保持できる)としている。演算結
果保持メモリ50bはFIFO(ファーストインファー
ストアウト)メモリで構成され、基本的に書き込まれた
順にその演算結果が読み出される。
The operation result holding memory 50b holds the operation result obtained by the operation unit 50a based on an instruction from the processor 40, and has a plurality of memory areas for simultaneously holding a plurality of operation results. ing. In the present embodiment, the operation result holding memory 50b has seven memory stages (capable of simultaneously holding seven operation results). The operation result holding memory 50b is constituted by a FIFO (first-in first-out) memory, and the operation results are basically read out in the order of writing.
【0035】スタックメモリ50cはコプロ50で共有
するメモリであり、本実施形態では特に書き込みレジス
タ50d及び読み出しレジスタ50eの値を待避させる
ために用いられる。
The stack memory 50c is a memory shared by the coprocessor 50. In this embodiment, the stack memory 50c is used to save the values of the write register 50d and the read register 50e.
【0036】書き込みレジスタ50dは演算結果保持メ
モリ50bのどの領域に演算結果を書き込むかを指定す
るポインタとして機能する。通常、書き込みレジスタ5
0dは演算結果をメモリ50bに書き込む毎に1ずつイ
ンクリメントされ、メモリ50bに順次演算結果を書き
込んでいく。
The write register 50d functions as a pointer for specifying in which area of the operation result holding memory 50b the operation result is to be written. Normally, write register 5
0d is incremented by 1 each time the operation result is written to the memory 50b, and the operation result is sequentially written to the memory 50b.
【0037】読み出しレジスタ50eは演算結果保持メ
モリ50bのどの領域から演算結果を読み出すかを指定
するポインタとして機能する。通常、読み出しレジスタ
50eもメモリ50bから演算結果を読み出す毎に1ず
つインクリメントされ、メモリ50bから古い順(演算
結果が書き込まれた順)に順次読み出していく。
The read register 50e functions as a pointer for specifying from which area of the operation result holding memory 50b the operation result is read. Normally, the read register 50e is also incremented by one each time the operation result is read from the memory 50b, and is sequentially read from the memory 50b in the oldest order (the order in which the operation result is written).
【0038】起動演算個数レジスタ50fは、コプロ5
0での演算が起動され、かつ、未だその演算結果がメモ
リ50bから読み出されていない個数を記憶する。この
起動演算個数は、割込処理時の書き込みレジスタ50d
や読み出しレジスタ50eの値を復帰させるために用い
られる。
The start operation number register 50f stores the
The number of operations for which the operation at 0 has been started and whose operation result has not yet been read from the memory 50b is stored. The number of startup operations is determined by the write register 50d during interrupt processing.
Or to restore the value of the read register 50e.
【0039】以下、メモリ50b、メモリ50c、書き
込みレジスタ(書き込みポインタ)50d、読み出しレ
ジスタ(読み出しポインタ)50e、起動演算個数レジ
スタ50fの動作を詳細に説明する。
Hereinafter, the operations of the memories 50b, 50c, the write register (write pointer) 50d, the read register (read pointer) 50e, and the start operation number register 50f will be described in detail.
【0040】<割込処理(例外処理)が発生しない場合
の動作>まず、プロセッサ40からの指示にしたがい、
コプロ50で通常の演算処理を行う場合を例にとり各部
の動作を説明する。
<Operation When Interrupt Processing (Exception Processing) Does Not Occur> First, in accordance with an instruction from the processor 40,
The operation of each unit will be described with reference to an example in which normal arithmetic processing is performed by the coprocessor 50.
【0041】図3には、コプロ50での演算が起動さ
れ、未だその演算結果が得られていない状態での各部の
様子が示されている。メモリ50bは既述したようにF
IFOメモリであり、複数段のメモリ領域を有してい
る。図では説明の都合上、各メモリ段に0〜6の番号が
付されている。書き込みポインタ50dはメモリ50b
の0段にセットされ、演算部50aで演算結果が得られ
た場合にはその結果はこの0段に書き込まれる。読み出
しポインタ50eも0領域にセットされており、演算結
果が書き込まれるとこれを読み出してプロセッサ40に
供給する。起動演算個数レジスタ50fは、演算が1回
起動され、その演算は未だ結果が読み出されていないた
め1にセットされる。
FIG. 3 shows the state of each unit in a state where the operation in the coprocessor 50 has been started and the operation result has not yet been obtained. The memory 50b stores F
It is an IFO memory and has a memory area of a plurality of stages. In the figure, for convenience of explanation, numbers 0 to 6 are assigned to the respective memory stages. The write pointer 50d is the memory 50b
Is set in the 0 stage, and when the operation result is obtained by the operation unit 50a, the result is written in the 0 stage. The read pointer 50e is also set in the 0 area, and when an operation result is written, it is read and supplied to the processor 40. The start operation number register 50f is set to 1 since the operation is started once and the result of the operation has not been read yet.
【0042】図4には、第1の演算に引き続いてプロセ
ッサ40から第2の演算がコプロ50に指示され、第1
の演算結果が得られてメモリ50bに書き込まれ、第2
の演算結果が未だ得られていない状態が示されている。
メモリ50bの0段には第1の演算結果が書き込まれ
(図では丸付き数字で演算結果を示している)、書き込
みポインタ50dは次の1段にセットされる。また、読
み出しポインタ50eは第1の演算の結果を読み出すべ
く、0段にセットされたままである。起動演算個数レジ
スタ50fは第1及び第2の演算が起動され、そのいず
れも演算結果が読み出されていないため、2にセットさ
れる。
In FIG. 4, following the first operation, a second operation is instructed from the processor 40 to the coprocessor 50, and the first operation is performed.
Is obtained and written to the memory 50b,
2 shows a state in which the calculation result of has not been obtained yet.
The first operation result is written into the 0 stage of the memory 50b (the operation result is indicated by a circled number in the figure), and the write pointer 50d is set to the next one stage. Further, the read pointer 50e is still set at 0 to read the result of the first operation. The start operation number register 50f is set to 2 since the first and second operations are started and neither operation result is read.
【0043】図5には、第2の演算に引き続いてさらに
プロセッサ40から第3の演算がコプロ50に指示さ
れ、その結果が未だ得られていない状態が示されてい
る。第1の演算結果及び第2の演算結果はメモリ50b
に書き込まれ、書き込みポインタ50dは次の演算結果
を書き込むべくメモリ50bの2段にセットされる。読
み出しポインタ50eは最も古い演算結果(最初の演算
結果)を読み出すべく0段にセットされたままである。
起動演算個数レジスタ50fは、第1〜第3の演算が起
動され、いずれもその演算結果が読み出されていないた
め3にセットされる。
FIG. 5 shows a state in which the processor 40 instructs the coprocessor 50 to execute the third operation following the second operation, and the result has not yet been obtained. The first operation result and the second operation result are stored in the memory 50b.
And the write pointer 50d is set in two stages of the memory 50b to write the next operation result. The read pointer 50e is still set at 0 to read the oldest operation result (first operation result).
The start operation number register 50f is set to 3 since the first to third operations are started, and none of the operation results is read out.
【0044】図6には、さらに第4の演算が起動された
場合の様子が示されている。メモリ50bには第1〜第
3の演算結果が書き込まれ、書き込みポインタ50dは
3段にセットされて第4の演算の結果をここに書き込む
ようにする。読み出しポインタ50eは0段にセットさ
れたままで第1の演算結果を読み出すようにし、起動演
算個数レジスタ50fは4にインクリメントされる。
FIG. 6 shows a state where the fourth operation is further activated. The first to third operation results are written in the memory 50b, and the write pointer 50d is set in three stages so that the result of the fourth operation is written here. The first operation result is read while the read pointer 50e is set at the 0 stage, and the start operation number register 50f is incremented to 4.
【0045】図7には、コプロ50において第4の演算
結果が得られる前に第1の演算結果を読み出した状態が
示されている。書き込みポインタ50dは3段にセット
されたままであるが、メモリ50bから0段に書き込ま
れている第1の演算結果を読み出したため読み出しポイ
ンタ50eは1つインクリメントされて1段にセットさ
れ、第2の演算結果を読み出すようにする、第1〜第4
の演算が起動され、第1の演算結果が読み出されたた
め、起動演算個数レジスタ50fは4から3にセットさ
れる。
FIG. 7 shows a state in which the first operation result is read before the fourth operation result is obtained in the coprocessor 50. The write pointer 50d remains set at three stages, but since the first operation result written to the zero stage is read from the memory 50b, the read pointer 50e is incremented by one and set to one stage, and the second pointer is set at the second stage. The first to fourth to read the operation result
Is started, and the first operation result is read out, so the start operation number register 50f is set from 4 to 3.
【0046】図8には、コプロ50において第4の演算
結果が得られてメモリ50bに書き込まれ、また、第2
の演算結果が読み出された状態が示されている。書き込
みポインタ50dは第5の演算に備えて4段にセットさ
れ、メモリ50bから第2の演算結果が読み出されたた
め読み出しポインタ50eは次の演算結果、すなわち第
3の演算結果を読み出すべく2段目にインクリメントさ
れる。また、第2の演算結果が読み出されたため、起動
演算個数レジスタ50fは図7に比べて1減った2がセ
ットされる。
FIG. 8 shows that the fourth operation result is obtained in the coprocessor 50 and is written into the memory 50b.
2 shows a state in which the calculation result of (1) is read. The write pointer 50d is set in four stages in preparation for the fifth operation, and since the second operation result has been read from the memory 50b, the read pointer 50e has two stages to read the next operation result, that is, the third operation result. Incremented by the eye. Further, since the second calculation result has been read, the startup calculation number register 50f is set to 2, which is one less than that in FIG.
【0047】図9には、プロセッサ40から第5、第
6、第7の演算が順次指示され、これらの演算結果が順
次得られた状態が示されている。メモリ50bには第5
〜第7の演算結果が4段目、5段目、6段目に順次格納
され、書き込みポインタ50bは6段目の次に演算結果
を書き込むべく、再び0段にセットされる。なお、0段
に書き込まれていた第1演算結果は既に読み出されてい
るため、0段に新たな演算結果を書き込んでも問題な
い。また、読み出しポインタ50eは第3演算結果を読
み出すべく2段にセットされたままであり、演算起動個
数レジスタ50fは、図8の状態からさらに3つの演算
が起動されているため、2から5にセットされる。
FIG. 9 shows a state in which the fifth, sixth, and seventh operations are sequentially instructed by the processor 40, and the results of these operations are sequentially obtained. The memory 50b has the fifth
The seventh to seventh operation results are sequentially stored in the fourth, fifth, and sixth stages, and the write pointer 50b is set to the zeroth stage again to write the operation result next to the sixth stage. Since the first operation result written in the 0th stage has already been read, there is no problem even if a new operation result is written in the 0th stage. The read pointer 50e is still set in two stages to read the third operation result, and the operation start number register 50f is set from 2 to 5 because three more operations have been started from the state of FIG. Is done.
【0048】図10には、プロセッサ40からさらに第
8、第9の演算が指示され、コプロ50で第8の演算結
果が得られた状態が示されている。第8演算結果は書き
込みポインタ50dで指示される0段に書き込まれ、書
き込みポインタは次の1段にセットされる。起動演算個
数レジスタ50fはさらに演算数が2個追加されたた
め、5から7にセットされる。ここで、起動演算個数レ
ジスタ50fは起動された演算で未だ結果が読み出され
ていない個数を示すものであり、この個数がメモリ50
bの最大メモリ段(本実施形態では7段)以下であれば
問題ないが、この個数が最大メモリ段を超えた場合に
は、未だ読み出されていない演算結果の上に新たな演算
結果を上書きすることになるので、新たな演算を起動す
ることはできない。この場合の処理については後述す
る。
FIG. 10 shows a state in which the processor 40 further instructs the eighth and ninth operations, and the coprocessor 50 has obtained the eighth operation result. The eighth operation result is written to the 0 stage indicated by the write pointer 50d, and the write pointer is set to the next one stage. The start operation number register 50f is set to 5 to 7 because two more operation numbers are added. Here, the start operation number register 50f indicates the number of the results of the started operation for which the result has not yet been read out.
If the number exceeds the maximum memory stage (7 in this embodiment), there is no problem. However, if the number exceeds the maximum memory stage, a new operation result is added to the operation result that has not been read yet. Since it is overwritten, a new operation cannot be started. The processing in this case will be described later.
【0049】図11には、新たな演算が指示される前
に、第3演算結果を読み出し、第9演算結果が得られた
状態が示されている。第3演算結果を読み出したため読
み出しポインタ50eは次の3段にセットされ、書き込
みポインタ50dも1段から2段にセットされる。起動
演算個数レジスタ50fは、第3演算結果が読み出され
たため図10の7から1だけ減って6となる。したがっ
て、この場合には新たな演算起動が1つだけ可能とな
り、プロセッサ40から演算指示を受け付けることがで
きる。
FIG. 11 shows a state in which the third operation result is read out before a new operation is instructed, and the ninth operation result is obtained. Since the third operation result has been read, the read pointer 50e is set to the next three stages, and the write pointer 50d is also set to one to two stages. Since the third operation result has been read out, the activation operation number register 50f is reduced by 1 from 7 in FIG. Therefore, in this case, only one new operation can be started, and an operation instruction from the processor 40 can be accepted.
【0050】以上が割込処理が発生しない場合のコプロ
50の動作である。通常の動作では、読み出しポインタ
50eや起動演算個数レジスタ50fのデータを待避さ
せるためのスタックメモリ50cは必要とせず、起動演
算個数レジスタ50fはプロセッサ40からの演算指示
を受け付けることができるか否かを判定するための判定
手段として機能する。次に、このような処理の間に割込
処理、特にコプロ50での演算が必要となる割込処理が
発生した場合の動作について説明する。
The above is the operation of the coprocessor 50 when no interrupt processing occurs. In the normal operation, the stack memory 50c for saving the data of the read pointer 50e and the start operation number register 50f is not required, and the start operation number register 50f determines whether or not an operation instruction from the processor 40 can be received. It functions as determination means for determination. Next, a description will be given of an operation in the case where an interrupting process, particularly an interrupting process requiring an operation in the coprocessor 50, occurs during such a process.
【0051】<割込処理が発生した場合の動作>図12
には、本実施形態において割込処理(例外処理)が発生
し、この割込処理においてコプロ50での演算が必要と
なる場合の処理の流れが示されている。メインルーチン
の中でコプロ50の第1演算が起動され、さらに第2演
算が起動された後に割込要求が発生し、この割込による
プロセッサ40からの演算指示を受け付ける。割込処理
ルーチンでは、コプロ50の第3演算を起動し、その演
算結果を読み出してプロセッサ40に送る。割込処理の
演算が完了した後、再びメインルーチンに復帰し、第1
演算結果及び第2演算結果が順次読み出される流れであ
る。このように、本実施形態のコプロ50は、メインル
ーチンにおいてプロセッサ40から指示された演算を実
行するとともに、割込処理に伴う演算も実行でき、しか
も既にメインルーチンで実行していた演算の結果もプロ
セッサ40に供給することができる。以下、この流れに
おけるコプロ50の各部の動作について、図中a〜gの
各状態に着目して順に説明する。
<Operation When Interrupt Processing Occurs> FIG.
FIG. 3 shows a flow of processing in a case where an interrupt process (exception process) occurs in the present embodiment and an operation by the coprocessor 50 is required in the interrupt process. An interrupt request is generated after the first operation of the coprocessor 50 is started and the second operation is started in the main routine, and an operation instruction from the processor 40 due to the interrupt is received. In the interrupt processing routine, the third operation of the coprocessor 50 is started, and the operation result is read and sent to the processor 40. After the calculation of the interrupt processing is completed, the processing returns to the main routine again, and the first
This is a flow in which the operation result and the second operation result are sequentially read. As described above, the coprocessor 50 of the present embodiment can execute not only the operation specified by the processor 40 in the main routine, but also the operation associated with the interrupt processing, and can also execute the result of the operation already executed in the main routine. It can be provided to the processor 40. Hereinafter, the operation of each unit of the co-pro 50 in this flow will be described in order, focusing on the states a to g in the drawing.
【0052】図13には、aの状態、すなわちコプロ5
0の演算が未だ起動されていない初期状態が示されてい
る。メモリ50bには何も書き込まれておらず、書き込
みポインタ50d及び読み出しポインタ50eは0段に
セットされ、起動演算個数レジスタ50fも0である。
なお、起動演算個数レジスタ50fの値が0の場合に
は、書き込みポインタ50dと読み出しポインタ50e
は常にメモリ50bの同一段を示す。
FIG. 13 shows the state of a, that is,
The initial state where the operation of 0 has not yet been started is shown. Nothing is written in the memory 50b, the write pointer 50d and the read pointer 50e are set to 0, and the start operation number register 50f is also 0.
If the value of the start operation number register 50f is 0, the write pointer 50d and the read pointer 50e
Always indicates the same stage of the memory 50b.
【0053】図14には、bの状態、すなわち第1演
算、第2演算が起動され、第1演算の結果がメモリ50
bに書き込まれた状態が示されている。第1演算結果は
メモリ50bの0段に書き込まれ、書き込みポインタ5
0dは次の1段にセットされる。読み出しポインタ50
eは0段にセットされたままであり、起動演算個数レジ
スタ50fは第1演算、第2演算が起動され、いずれも
演算結果が読み出されていないので2にセットされる。
In FIG. 14, the state of b, ie, the first operation and the second operation are activated, and the result of the first operation is stored in the memory 50.
The state written in b is shown. The first operation result is written to the 0th stage of the memory 50b, and the write pointer 5
0d is set to the next stage. Read pointer 50
e remains set to 0, and the start operation number register 50f is set to 2 since the first operation and the second operation are started, and neither operation result is read.
【0054】図15及び図16には、cの状態、すなわ
ち割込要求が発生し、割込処理に移行した状態が示され
ている。割込処理における演算を行う際には、メインル
ーチンにおける第1演算及び第2演算の結果が未だ読み
出されていないため、これらを割込処理から復帰した後
に読み出す必要がある。そこで、割込要求がプロセッサ
40から指示されたときに、読み出しポインタ50eの
データ、すなわちこれから読み出すべきメモリ50bの
メモリアドレス(図では0段というアドレス)をスタッ
クメモリ50cに待避させるとともに、起動演算個数レ
ジスタ50fの値(図では2というデータ)をスタック
メモリ50cに待避させる。次に、図16に示されるよ
うに、読み出しポインタ50eを起動演算個数レジスタ
50fに記憶された数(あるいはスタックメモリ50c
に待避させた数)だけインクリメントする。この例の場
合、読み出しポインタ50eを0段から2段に変更す
る。さらに、起動演算個数レジスタ50fの値を2から
0にリセットする。まとめると、割込処理が発生したと
きのコプロ50の処理は、 (1)読み出しポインタ50eのアドレスをスタックメ
モリ50cに待避させる (2)起動演算個数レジスタのデータをスタックメモり
50cに待避させる (3)読み出しポインタを起動演算個数レジスタの数だ
け変更する (4)起動演算個数レジスタを0にリセットする である。以上のようにして、メインルーチンにおける処
理の状態をスタックメモリ50cに待避させ、割込処理
における演算の準備が整うことになる。
FIGS. 15 and 16 show a state c, that is, a state in which an interrupt request is generated and the processing shifts to the interrupt processing. When performing the operation in the interrupt processing, the results of the first operation and the second operation in the main routine have not been read yet, and therefore it is necessary to read these after returning from the interrupt processing. Therefore, when the interrupt request is instructed from the processor 40, the data of the read pointer 50e, that is, the memory address of the memory 50b to be read from now (address 0 in the figure) is saved in the stack memory 50c, The value (data 2 in the figure) of the register 50f is saved in the stack memory 50c. Next, as shown in FIG. 16, the read pointer 50e is stored in the start operation number register 50f (or the stack memory 50c).
Is incremented by the number saved to In the case of this example, the read pointer 50e is changed from 0 stage to 2 stages. Further, the value of the start operation number register 50f is reset from 2 to 0. In summary, the processing of the coprocessor 50 when the interrupt processing occurs is as follows: (1) Save the address of the read pointer 50e in the stack memory 50c. (2) Save the data of the start operation number register in the stack memory 50c. 3) Change the read pointer by the number of start operation number registers. (4) Reset the start operation number register to 0. As described above, the state of the processing in the main routine is saved in the stack memory 50c, and the preparation for the operation in the interrupt processing is completed.
【0055】図17には、dの状態、すなわち割込処理
に移行して第3演算を起動した状態が示されている。な
お、このときにはメインルーチンにおける第2演算結果
が既に得られていると想定している。メモリ50bには
第1演算結果及び第2演算結果がそれぞれ0段、1段に
書き込まれており、書き込みポインタ50dは次の2段
にセットされる。一方、読み出しポインタ50eは上述
したように2段にセットされており、起動演算個数レジ
スタ50fは新たに第3演算が起動されたため0から1
にセットされる。注意すべきは、この時点で書き込みポ
インタ50dと読み出しポインタ50eがメモリの同一
アドレスを指定している点であり、これにより割込処理
における演算結果を読み出すことが可能となる。
FIG. 17 shows a state d, that is, a state in which the process shifts to the interrupt processing and the third operation is started. At this time, it is assumed that the second calculation result in the main routine has already been obtained. The first operation result and the second operation result are written in the memory 50b in the first and second stages, respectively, and the write pointer 50d is set in the next two stages. On the other hand, the read pointer 50e is set in two stages as described above, and the activation operation number register 50f stores 0 to 1 since the third operation is newly activated.
Is set to It should be noted that at this point, the write pointer 50d and the read pointer 50e point to the same address in the memory, so that the operation result in the interrupt processing can be read.
【0056】図18には、eの状態、すなわち割込処理
に移行して第3演算結果が得られた状態が示されてい
る。第3演算結果は図17において書き込みポインタ5
0dが指定する2段目に書き込まれ、その後書き込みポ
インタ50dは次の3段にセットされる。読み出しポイ
ンタ50e及び起動演算個数レジスタ50fはそのまま
である。
FIG. 18 shows the state of e, that is, the state in which the process proceeds to the interrupt processing and the third operation result is obtained. The third operation result is the write pointer 5 in FIG.
0d is written to the designated second stage, and then the write pointer 50d is set to the next three stages. The read pointer 50e and the start operation number register 50f remain unchanged.
【0057】図19には、fの状態、すなわち割込処理
に移行して第3演算結果を読み出した状態が示されてい
る。読み出しは、図18において読み出しポインタ50
eが指定する2段目から行われ、読み出された演算結果
はプロセッサ40に送られる。読み出しポインタ50e
は次の3段にセットされる。また、起動演算個数レジス
タ50fは第3演算結果を読み出したため、1から0に
セットされる。
FIG. 19 shows the state of f, that is, the state where the process proceeds to the interrupt processing and the third operation result is read. The reading is performed by the reading pointer 50 in FIG.
The calculation result read from the second stage designated by e and sent to the processor 40 is sent to the processor 40. Read pointer 50e
Are set in the next three stages. Also, since the third operation result has been read out, the activation operation number register 50f is set from 1 to 0.
【0058】図20には、gの状態、すなわち割込処理
を終了してメインルーチンに復帰する状態が示されてい
る。第3演算結果を読み出した後、スタックメモリ50
cに待避させていた読み出しポインタ50eのアドレス
及び起動演算個数レジスタ50fのデータをそれぞれ戻
し、読み出しポインタ50eを3段から0段に戻し、起
動演算個数レジスタ50fを0から2に戻す。さらに、
書き込みポインタ50dに関して、読み出しポインタ5
0eのアドレスを起動演算個数レジスタ50fのデータ
だけシフトさせたアドレス(本実施形態では読み出しポ
インタ50eが0段で、起動演算個数レジスタが2なの
で、2段となる)にシフトさせる。これにより、割込処
理が発生するまえのメインルーチン処理に戻ることがで
き、第1演算結果及び第2演算結果を確実に読み出して
プロセッサ40に送ることができる。また、書き込みポ
インタ50dは2段にセットされているため、新たな第
4演算がプロセッサ40から指示されたとしても、その
演算結果は2段に書き込まれるため、第1及び第2演算
結果が上書きされて失われることもない。割込処理完了
時の各部の動作をまつめると以下のようになる。 (i)読み出しポインタ50eをスタックメモリ50c
に待避させておいたアドレスに復帰させる (ii)起動演算個数レジスタをスタックメモリ50c
に待避させておいたデータに復帰させる (iii)書き込みポインタを(復帰後の読み出しポイ
ンタ+起動演算個数レジスタ)のアドレスに変更する 以上により割込処理においてコプロ50での演算が必要
となった場合でも、この割込処理をコプロ50で実行
し、さらに割込処理の発生前に実行していた演算の結果
もプロセッサ40に送ることができる。
FIG. 20 shows the state of g, that is, the state in which the interrupt processing is terminated and the process returns to the main routine. After reading the third operation result, the stack memory 50
The address of the read pointer 50e and the data of the startup operation number register 50f saved in c are returned, the read pointer 50e is returned from three stages to zero, and the startup operation number register 50f is returned from 0 to 2. further,
Regarding the write pointer 50d, the read pointer 5
The address of 0e is shifted to an address shifted by the data of the start operation number register 50f (in the present embodiment, the read pointer 50e is 0-stage and the start operation number register is 2, so that the address becomes 2 stages). As a result, it is possible to return to the main routine processing before the interrupt processing occurs, and it is possible to reliably read out the first calculation result and the second calculation result and send them to the processor 40. Further, since the write pointer 50d is set in two stages, even if a new fourth operation is instructed from the processor 40, the operation result is written in two stages, so that the first and second operation results are overwritten. Nothing is lost. The operation of each unit at the time of completion of the interrupt processing is summarized as follows. (I) The read pointer 50e is stored in the stack memory 50c.
(Ii) Restores the start operation number register to the stack memory 50c.
(Iii) Change the write pointer to the address of (read pointer after restoration + start operation number register) When the operation by the coprocessor 50 becomes necessary in the interrupt processing as described above However, the interrupt processing can be executed by the coprocessor 50, and the result of the operation executed before the occurrence of the interrupt processing can also be sent to the processor 40.
【0059】なお、割込処理が発生してコプロ50にて
上述したような処理を実行中に、さらに割込処理が発生
し、この第2の割込処理においてコプロ50での演算が
必要となった場合(すなわち多重割込処理)でも本実施
形態は対応することが可能である。以下、この場合の動
作について説明する。
Note that while the above-described processing is being executed by the coprocessor 50 after the interrupt processing has occurred, the interrupt processing further occurs, and the operation by the coprocessor 50 is required in the second interrupt processing. In this case, the present embodiment can cope with such a case (ie, multiple interrupt processing). Hereinafter, the operation in this case will be described.
【0060】<多重割込処理が発生した場合の動作>図
21には、多重割込処理の流れが示されている。メイン
ルーチンにおいてコプロ50に対して第1演算及び第2
演算が指示され、第1割込要求が発生してこれを受付、
割込処理に移行する。割込処理においてコプロ50に対
して第3演算が指示され、第3演算結果を読み出す前に
第2割込要求が発生してこれを受け付ける。第2割込処
理においてコプロ50に対して第4演算が指示され、第
4演算結果を読み出して第2割込処理を完了する。第2
割込処理が完了した後、第1割込処理に復帰して第3演
算結果を読み出し、第1割込処理を完了する。第1割込
処理が完了した後、メインルーチンに復帰し、第1演算
結果及び第2演算結果を読み出す流れである。以下、こ
の流れにおけるコプロ50の各部の動作について、図中
A〜Jの各状態に着目して順に説明する。
<Operation when Multiple Interrupt Processing Occurs> FIG. 21 shows a flow of the multiple interrupt processing. In the main routine, the first operation and the second operation
Calculation is instructed, a first interrupt request is generated and accepted,
Move to interrupt processing. In the interrupt processing, a third operation is instructed to the coprocessor 50, and a second interrupt request is generated and accepted before reading the third operation result. In the second interrupt processing, the fourth operation is instructed to the co-processor 50, and the fourth operation result is read to complete the second interrupt processing. Second
After the completion of the interrupt process, the process returns to the first interrupt process, reads out the third operation result, and completes the first interrupt process. After the first interrupt processing is completed, the flow returns to the main routine, and the first operation result and the second operation result are read. Hereinafter, the operation of each unit of the co-pro 50 in this flow will be described in order, focusing on the states A to J in the drawing.
【0061】図22には、Aの状態、すなわち第1演算
及び第2演算が起動され、第1演算結果がメモリ50c
に書き込まれ、第2演算結果が未だ書き込まれていない
状態が示されている。書き込みポインタ50dは1段、
読み出しポインタ50eは0段にセットされ、起動演算
個数レジスタ50fは2にセットされる。
FIG. 22 shows the state of A, that is, the first operation and the second operation are started, and the first operation result is stored in the memory 50c.
, And the state where the second operation result has not yet been written is shown. The write pointer 50d is one stage,
The read pointer 50e is set to the 0th stage, and the start operation number register 50f is set to 2.
【0062】図23及び図24には、Bの状態、すなわ
ち第1割込要求を受け付けて第1割込処理に移行した状
態が示されている。割込処理移行するときには、既述し
た(1)〜(4)の動作が行われ、読み出しポインタ5
0eのアドレス及び起動演算個数レジスタ50fのデー
タをスタックメモリ50cに待避し、読み出しポインタ
50eを起動演算個数レジスタのデータ分だけシフトす
るとともに、起動演算個数レジスタ50fを0にリセッ
トする。
FIGS. 23 and 24 show a state B, that is, a state in which the first interrupt request has been received and the process has shifted to the first interrupt processing. When shifting to the interrupt processing, the operations (1) to (4) described above are performed, and the read pointer 5
The address of 0e and the data of the start operation number register 50f are saved in the stack memory 50c, the read pointer 50e is shifted by the data of the start operation number register, and the start operation number register 50f is reset to 0.
【0063】図25には、Cの状態、すなわち第1割込
処理において第3演算が起動された状態が示されてい
る。このとき、第2演算結果は既に得られてメモリ50
bに書き込まれているとする。書き込みポインタ50d
は2段にセットされ、第3演算が起動されたため、起動
演算個数レジスタ50fは0から1にセットされる。
FIG. 25 shows the state of C, that is, the state where the third operation is activated in the first interrupt processing. At this time, the second operation result has already been obtained and
It is assumed that data has been written to b. Write pointer 50d
Are set in two stages, and the third operation is started, so that the starting operation number register 50f is set from 0 to 1.
【0064】図26及び図27には、Dの状態、すなわ
ち第1割込処理における第3演算結果を読み出す前に第
2割込要求を受け付け、第2割込処理に移行する状態が
示されている。第1割込処理から第2割込処理に移行す
るときには、メインルーチンから第1割込処理に移行す
るときと同様に(1)〜(4)の動作が実行される。す
なわち、読み出しポインタ50eのアドレスと起動演算
個数レジスタ50fのデータをスタックメモリ50cに
待避し、読み出しポインタ50eを起動演算個数レジス
タ50fのデータ分だけシフトし、起動演算個数レジス
タ50fを0にリセットする。これにより、第2割込処
理に移行する準備が整うことになる。なお、スタックメ
モリ50cには既にメインルーチンから第1割込処理に
移行するときの読み出しポインタ50eと起動演算個数
レジスタ50fのデータが待避されているため、今回の
データ待避はスタックメモリ50cの別の領域に待避す
る必要がある。メインルーチンから第1割込処理に移行
するときに待機させたデータを待避データ群1、第1割
込処理から第2割込処理に移行するときに待避させたデ
ータを待避データ群2とする。
FIGS. 26 and 27 show a state D, that is, a state in which a second interrupt request is accepted before the third operation result in the first interrupt processing is read, and a transition is made to the second interrupt processing. ing. When shifting from the first interrupt process to the second interrupt process, the operations (1) to (4) are executed in the same manner as when shifting from the main routine to the first interrupt process. That is, the address of the read pointer 50e and the data of the start operation number register 50f are saved in the stack memory 50c, the read pointer 50e is shifted by the data of the start operation number register 50f, and the start operation number register 50f is reset to 0. As a result, the preparation for shifting to the second interrupt processing is completed. Note that the stack memory 50c has already saved the data of the read pointer 50e and the start operation number register 50f when shifting from the main routine to the first interrupt processing. It is necessary to evacuate to the area. The data saved from the main routine to the first interrupt process is referred to as a saved data group 1, and the data saved from the first interrupt process to the second interrupt process is referred to as a saved data group 2. .
【0065】図28には、Eの状態、すなわち第2割込
処理において第4演算が起動された状態が示されてい
る。このとき、第1割込処理における第3演算結果が得
られ、メモリ50bに書き込まれたとする。第3演算結
果は書き込みポインタ50dが指示する2段に書き込ま
れ、書き込みポインタ50dは次の3段にセットされ
る。読み出しポインタ50eは図27と同様に3段であ
り、起動演算個数レジスタ50fは第4演算が起動され
たため0から1にセットされる。
FIG. 28 shows the state of E, that is, the state in which the fourth operation is activated in the second interrupt processing. At this time, it is assumed that the third operation result in the first interrupt processing is obtained and written to the memory 50b. The third operation result is written to two stages indicated by the write pointer 50d, and the write pointer 50d is set to the next three stages. The read pointer 50e has three stages as in FIG. 27, and the activation operation number register 50f is set from 0 to 1 because the fourth operation has been activated.
【0066】図29には、Fの状態、すなわち第4演算
結果が得られた状態が示されている。第4演算結果は、
書き込みポインタ50dが指示するメモリ50bの3段
に書き込まれ、書き込みポインタ50dは次の4段にセ
ットされる。読み出しポインタ50eは3段にセットさ
れているから、この第4演算結果を直ちに読み出すこと
ができる。
FIG. 29 shows the state of F, that is, the state where the fourth operation result is obtained. The fourth operation result is
The data is written to the three stages of the memory 50b indicated by the write pointer 50d, and the write pointer 50d is set to the next four stages. Since the read pointer 50e is set in three stages, the fourth operation result can be immediately read.
【0067】図30には、Gの状態、すなわち第4演算
結果を読み出した状態が示されている。第4演算結果を
読み出してプロセッサ40に送った後、読み出しポイン
タ50eは次の4段にセットされ、また起動演算個数レ
ジスタ50fは第4演算結果を読み出したため1から0
にセットされる。これにより、第2割込処理が完了す
る。
FIG. 30 shows the state of G, that is, the state of reading the fourth operation result. After reading the fourth operation result and sending it to the processor 40, the read pointer 50e is set to the next four stages, and the start operation number register 50f reads 1 to 0 because the fourth operation result has been read.
Is set to Thus, the second interrupt processing is completed.
【0068】図31には、Hの状態、すなわち第2割込
処理を完了して第1割込処理に復帰する状態が示されて
いる。復帰時には、上述した(i)〜(iii)の動作
が実行される。具体的には、読み出しポインタ50eと
起動演算個数レジスタ50fに対してスタックメモリ5
0cに待避させておいた待避データ群2を戻し、書き込
みポインタ50dを読み出しポインタ50eのアドレス
から起動演算個数レジスタ50fで指示される数だけシ
フトさせる。この例では、書き込みポインタ50dは4
段から3段に変更される。読み出しポインタ50eを4
段から2段、すなわち第1割込処理から第2割込処理に
移行する前の状態に戻してやることで、2段に書き込ま
れている第3演算結果を読み出すことが可能となる。
FIG. 31 shows the state of H, that is, the state of completing the second interrupt processing and returning to the first interrupt processing. At the time of return, the operations (i) to (iii) described above are executed. Specifically, the stack memory 5 is stored in the read pointer 50e and the start operation number register 50f.
The saved data group 2 saved to 0c is returned, and the write pointer 50d is shifted from the address of the read pointer 50e by the number indicated by the start operation number register 50f. In this example, the write pointer 50d is 4
It is changed from three stages to three stages. Set the read pointer 50e to 4
By returning to the second stage, that is, the state before shifting from the first interrupt process to the second interrupt process, the third operation result written in the second stage can be read.
【0069】図32には、Iの状態、すなわち第3演算
結果を読み出した状態が示されている。読み出された第
3演算結果、つまり第1割込処理における第3演算の結
果はプロセッサ40に送られ、読み出しポインタ50e
は3段にセットされる。また、起動回数個数レジスタ5
0fは第3演算結果を読み出したので1から0にセット
される。これにより、第1割込処理が完了する。
FIG. 32 shows the state of I, that is, the state in which the third operation result has been read. The read third operation result, that is, the result of the third operation in the first interrupt processing, is sent to the processor 40, and the read pointer 50e
Are set in three stages. Also, the number-of-starts count register 5
0f is set from 1 to 0 since the third operation result is read. Thus, the first interrupt processing is completed.
【0070】図33には、Jの状態、すなわち第1割込
処理を完了してメインルーチンに復帰する状態が示され
ている。復帰時には、(i)〜(iii)の動作が再び
実行される。具体的には、読み出しポインタ50eと起
動演算個数レジスタ50fに対してスタックメモリ50
cに待避させておいた待避データ群1を戻し、書き込み
ポインタ50dを読み出しポインタ50eのアドレスか
ら起動演算個数レジスタ50fで指示される数だけシフ
トさせる。この例では、書き込みポインタ50dは3段
から2段に変更される。読み出しポインタ50eを3段
から0段、すなわち移行前のアドレスに戻してやること
で、0段に書き込まれている第1演算結果及び1段に書
き込まれている第2演算結果を順次読み出し、プロセッ
サ40に送ることができる。
FIG. 33 shows the state of J, that is, the state where the first interrupt processing is completed and the process returns to the main routine. Upon return, the operations of (i) to (iii) are executed again. Specifically, the stack memory 50 is stored in the read pointer 50e and the start operation number register 50f.
The saved data group 1 saved to c is returned, and the write pointer 50d is shifted from the address of the read pointer 50e by the number indicated by the start operation number register 50f. In this example, the write pointer 50d is changed from three stages to two stages. By returning the read pointer 50e from the third stage to the 0th stage, that is, to the address before the transition, the first operation result written in the 0th stage and the second operation result written in the 1st stage are sequentially read out, and the processor 40 Can be sent to
【0071】以上により、多重割込要求があり、コプロ
50での演算が必要となった場合でも、これらの演算結
果を順次プロセッサ40に返すことが可能となる。な
お、割込処理へ移行するときに実行する動作(1)〜
(4)は実際には割込処理ルーチンのはじめにプログラ
ミングしてコプロ50に実行させればよく、割込処理か
ら復帰するときに実行する動作(i)〜(iii)は割
込処理ルーチンの最後にプログラミングしておけばよ
い。
As described above, even when there is a multiple interrupt request and the calculation in the coprocessor 50 becomes necessary, it is possible to sequentially return these calculation results to the processor 40. In addition, the operation (1) to be executed when shifting to the interrupt processing
(4) may actually be programmed at the beginning of the interrupt processing routine and executed by the coprocessor 50. The operations (i) to (iii) executed when returning from the interrupt processing are performed at the end of the interrupt processing routine. It should be programmed in
【0072】また、本実施形態では7段のメモリ(FI
FOメモリ)50bを用いることで最大7個の演算を起
動することが可能であるが、割込処理時には起動演算個
数レジスタ50fを0にリセットしているため、多重割
込処理があった場合に総起動演算個数が不明となるおそ
れがある。これを防止するためには、起動演算個数レジ
スタ50fの他に、割込処理を含めた全てのルーチンに
おける総起動演算個数をカウントするレジスタ(総数レ
ジスタと称する)を新たに設け、このレジスタの値が7
に達したか否かを判定すればよい。具体的な方法は以下
の通りである。
In the present embodiment, a seven-stage memory (FI
It is possible to start up to seven operations by using the FO memory) 50b. However, since the start operation number register 50f is reset to 0 at the time of interrupt processing, when multiple interrupt processing is performed, There is a possibility that the total number of startup calculations becomes unknown. In order to prevent this, in addition to the start operation number register 50f, a register (referred to as a total number register) for counting the total start operation number in all the routines including the interrupt processing is newly provided. Is 7
May be determined. The specific method is as follows.
【0073】(a)総数レジスタの値がメモリ50bの
許容最大数、すなわち7となったことをハードウェアで
検出し、ハードウェアにより新たなコプロ50での演算
を禁止する。この場合、新たなコプロ演算を起動しよう
とすると、起動命令の実行が待たされるため、デッドロ
ック状態となる。この状態により、プログラマはプログ
ラムデバッグを行う機会が与えられる (b)総数レジスタの値をソフトウェアで読み出し可能
とし、コプロ演算を起動する必要があるときにその都度
総数レジスタの値を読み、コプロ演算が起動できる状態
にあることを確認した上でコプロ演算を起動するように
プログラミングする (c)総数レジスタの値が許容最大数となったことをハ
ードウェアで検出し、コプロ演算禁止状態であることを
示すフラグを変化させ、このフラグをソフトウェアで読
み出し可能として(b)と同様にプログラミングする。
(A) It is detected by hardware that the value of the total number register has reached the maximum allowable number of the memory 50b, that is, 7, and the operation in the new coprocessor 50 is prohibited by hardware. In this case, when trying to start a new coprocessor operation, the execution of the start instruction is awaited, so that a deadlock state occurs. This state gives the programmer an opportunity to perform program debugging. (B) The value of the total number register can be read out by software, and the value of the total number register is read each time it is necessary to start the copro operation. Programming to start co-pro operation after confirming that it can be started (c) It is detected by hardware that the value of the total number register has reached the maximum allowable number, and the co-pro operation is prohibited. The flag shown is changed, and this flag is made readable by software, and programming is performed in the same manner as in (b).
【0074】以下、総数レジスタを用いてメモリ50b
への上書きを防止する動作について説明する。
The memory 50b will now be described using the total number register.
The operation for preventing overwriting of the data will be described.
【0075】<上書き防止動作>図34には、メインル
ーチンにおいて第1演算、第2演算、第3演算、第4演
算が起動され、第1演算結果、第2演算結果、第3演算
結果がメモリ50bに順次書き込まれ、第4演算結果が
未だ得られていない状態が示されている。起動演算個数
レジスタ50fの他に、総数レジスタ50gが新たに設
けられており、起動された演算で未だその結果が読み出
されていない数を記憶する。この場合、第1〜第4の演
算が起動され、その全てが読み出されていないため起動
演算個数レジスタ50f及び総数レジスタ50gとも4
がセットされる。
<Overwrite Prevention Operation> FIG. 34 shows that the first operation, the second operation, the third operation, and the fourth operation are started in the main routine, and the first operation result, the second operation result, and the third operation result are displayed. A state is shown in which data is sequentially written to the memory 50b and the fourth operation result has not yet been obtained. In addition to the start operation number register 50f, a total number register 50g is newly provided, and stores the number whose result has not yet been read by the started operation. In this case, the first to fourth operations are activated, and not all of them have been read out, so that both the activated operation number register 50f and the total number register 50g have 4
Is set.
【0076】図35及び図36には、第1割込要求を受
け付け、第1割込処理に移行する状態が示されている。
(1)〜(4)の動作が実行され、起動演算個数レジス
タ50fの値は0にリセットされる。一方、総数レジス
タ50gはリセットされることなく4のまま維持され
る。
FIGS. 35 and 36 show a state in which the first interrupt request is accepted and the process shifts to the first interrupt processing.
The operations of (1) to (4) are executed, and the value of the start operation number register 50f is reset to 0. On the other hand, the total register 50g is maintained at 4 without being reset.
【0077】図37には、第1割込処理において第5演
算及び第6演算が起動され、メインルーチンの第4演算
の結果及び第5演算結果、第6演算結果が得られた状態
が示されている。新たに第5及び第6演算の2つの演算
が起動されたため、起動演算個数レジスタ50fは0か
ら2にセットされ、総数レジスタ50gは4から6にセ
ットされる。
FIG. 37 shows a state in which the fifth operation and the sixth operation are started in the first interrupt processing, and the fourth operation result, the fifth operation result, and the sixth operation result of the main routine are obtained. Have been. Since the two operations of the fifth and sixth operations are newly started, the number-of-startup-operations register 50f is set from 0 to 2, and the total-number register 50g is set from 4 to 6.
【0078】図38及び図39には、第2割込要求を受
け付け、第2割込処理に移行する状態が示されている。
再び(1)〜(4)の動作が実行され、起動演算個数レ
ジスタ50eはそのデータをスタックメモリ50cに待
避させた後にリセットされる。一方、総数レジスタ50
gはリセットされることなく、その値6が保持される。
FIGS. 38 and 39 show a state in which the second interrupt request is accepted and the process shifts to the second interrupt processing.
The operations (1) to (4) are executed again, and the activation operation number register 50e is reset after saving the data in the stack memory 50c. On the other hand, the total number register 50
g is held at its value 6 without being reset.
【0079】図40には、第2割込処理において第7演
算が起動された状態が示されている。第7演算結果は未
だ得られていないが、起動演算個数レジスタ50fは0
から1にセットされ、総数レジスタ50gは6から7に
セットされ、総数レジスタ50gがメモリ50bの上限
である7に達したため新たな演算の起動が禁止されるこ
とになる。総数レジスタ50gの値は、上述したように
ソフトウェア的に検出してコプロ50の演算部50a及
びプロセッサ40側で認識することができる。
FIG. 40 shows a state where the seventh operation is activated in the second interrupt processing. Although the seventh operation result has not been obtained yet, the activation operation number register 50f indicates 0
To 1 and the total number register 50g is set from 6 to 7, and since the total number register 50g reaches 7, which is the upper limit of the memory 50b, activation of a new operation is prohibited. As described above, the value of the total number register 50g can be detected by software and recognized by the arithmetic unit 50a and the processor 40 of the coprocessor 50.
【0080】図41には、第7演算結果が得られたとき
の状態が示されている。第7演算結果はメモリ50bの
1段に書き込まれ、通常であれば書き込みポインタ50
dを1段シフトさせることになるが、図39において既
にコプロ演算禁止状態にあるため、書き込みレジスタ5
0dを次段に進めない。
FIG. 41 shows a state when the seventh calculation result is obtained. The seventh operation result is written to one stage of the memory 50b, and the write pointer 50
d is shifted by one stage, but in FIG.
0d does not advance to the next stage.
【0081】図42には、図41において第7演算結果
を読み出したときの状態が示されている。第7演算結果
を読み出したため、起動演算個数レジスタ50eは1か
ら0にセットされ、総数レジスタ50gも7から6にセ
ットされる。総数レジスタ50gの値が6になり、メモ
リ50bの上限値よりも小さい値となったため、再びコ
プロ50での演算起動が可能となる。なお、第7演算結
果を読み出す際には、コプロ演算禁止状態における読み
出しとなるため、通常のように読み出した後に読み出し
ポインタ50eを次段に進めることなく、そのアドレス
を維持する。
FIG. 42 shows a state when the seventh calculation result in FIG. 41 is read. Since the seventh operation result has been read, the activation operation number register 50e is set from 1 to 0, and the total number register 50g is also set from 7 to 6. Since the value of the total number register 50g is 6, which is smaller than the upper limit value of the memory 50b, the operation can be started again by the coprocessor 50. When the seventh operation result is read, since the reading is performed in the coprocessor operation prohibited state, the address is maintained without advancing the read pointer 50e to the next stage after reading as usual.
【0082】以上説明したように、本実施形態によれ
ば、メインルーチンにおいてコプロ50が演算処理を実
行しているときに割込要求が発生し、この割込要求にお
いてコプロ50での演算が必要となった場合でも、割込
要求を待たせることなく直ちに実行できる。しかも、メ
インルーチンにおける演算の途中経過も無駄にすること
なく演算を続行することができ、効率の高い割込処理が
実現する。
As described above, according to the present embodiment, an interrupt request is generated while the coprocessor 50 is executing the arithmetic processing in the main routine, and the operation by the coprocessor 50 is required in the interrupt request. Can be executed immediately without waiting for the interrupt request. In addition, the calculation can be continued without wasting the progress of the calculation in the main routine, and highly efficient interrupt processing can be realized.
【0083】なお、本実施形態では、メモリ50bの段
数を7段(同時に7個の演算結果を保持できる)とした
が、これは例示にすぎず、2段以上であれば任意の段数
とすることができる。
In the present embodiment, the number of stages of the memory 50b is set to seven (seven arithmetic results can be held at the same time). However, this is merely an example, and if it is two or more, the number of stages is arbitrary. be able to.
【0084】[0084]
【発明の効果】本発明によれば、コプロセッサ(第2演
算部)による演算実行中に割込要求(あるいは例外処
理)が生じた場合でも割込要求を待たせることなく処理
できるとともに、この割込要求自体がコプロセッサの演
算を必要とする場合においても迅速に対応することがで
きる。
According to the present invention, even when an interrupt request (or exception processing) occurs during execution of an operation by the coprocessor (second operation unit), the interrupt request can be processed without waiting, and Even when the interrupt request itself requires the operation of the coprocessor, it is possible to respond quickly.
【図面の簡単な説明】[Brief description of the drawings]
【図1】 実施形態の全体構成図である。FIG. 1 is an overall configuration diagram of an embodiment.
【図2】 図1におけるコプロセッサの構成図である。FIG. 2 is a configuration diagram of a coprocessor in FIG. 1;
【図3】 割込要求が発生しない場合の説明図(その
1)である。
FIG. 3 is an explanatory diagram (No. 1) when an interrupt request does not occur;
【図4】 割込要求が発生しない場合の説明図(その
2)である。
FIG. 4 is an explanatory diagram (part 2) when an interrupt request is not generated;
【図5】 割込要求が発生しない場合の説明図(その
3)である。
FIG. 5 is an explanatory diagram (part 3) when an interrupt request does not occur;
【図6】 割込要求が発生しない場合の説明図(その
4)である。
FIG. 6 is an explanatory diagram (No. 4) when an interrupt request does not occur;
【図7】 割込要求が発生しない場合の説明図(その
5)である。
FIG. 7 is an explanatory diagram (part 5) when an interrupt request is not generated;
【図8】 割込要求が発生しない場合の説明図(その
6)である。
FIG. 8 is an explanatory diagram (No. 6) when an interrupt request does not occur;
【図9】 割込要求が発生しない場合の説明図(その
7)である。
FIG. 9 is an explanatory diagram (part 7) when an interrupt request is not generated;
【図10】 割込要求が発生しない場合の説明図(その
8)である。
FIG. 10 is an explanatory diagram (No. 8) when an interrupt request does not occur;
【図11】 割込要求が発生しない場合の説明図(その
9)である。
FIG. 11 is an explanatory diagram (No. 9) when an interrupt request is not generated;
【図12】 割込要求が発生した場合の全体処理説明図
である。
FIG. 12 is an explanatory diagram of the entire processing when an interrupt request is generated.
【図13】 割込要求が発生した場合の説明図(その
1)である。
FIG. 13 is an explanatory diagram (No. 1) when an interrupt request occurs.
【図14】 割込要求が発生した場合の説明図(その
2)である。
FIG. 14 is an explanatory diagram (No. 2) when an interrupt request occurs.
【図15】 割込要求が発生した場合の説明図(その
3)である。
FIG. 15 is an explanatory diagram (part 3) when an interrupt request is generated;
【図16】 割込要求が発生した場合の説明図(その
4)である。
FIG. 16 is an explanatory diagram (No. 4) when an interrupt request occurs.
【図17】 割込要求が発生した場合の説明図(その
5)である。
FIG. 17 is an explanatory diagram (part 5) of the case where an interrupt request has occurred;
【図18】 割込要求が発生した場合の説明図(その
6)である。
FIG. 18 is an explanatory diagram (part 6) of the case where an interrupt request has occurred.
【図19】 割込要求が発生した場合の説明図(その
7)である。
FIG. 19 is an explanatory diagram (part 7) when an interrupt request is generated;
【図20】 割込要求が発生した場合の説明図(その
8)である。
FIG. 20 is an explanatory diagram (8) of the case where an interrupt request occurs.
【図21】 多重割込要求が発生した場合の全体処理説
明図である。
FIG. 21 is an explanatory diagram of the entire processing when a multiple interrupt request occurs.
【図22】 多重割込要求が発生した場合の説明図(そ
の1)である。
FIG. 22 is an explanatory diagram (1) of a case where a multiple interrupt request has occurred.
【図23】 多重割込要求が発生した場合の説明図(そ
の2)である。
FIG. 23 is an explanatory diagram (part 2) of the case where a multiple interrupt request has occurred.
【図24】 多重割込要求が発生した場合の説明図(そ
の3)である。
FIG. 24 is an explanatory diagram (3) of a case where a multiple interrupt request has occurred;
【図25】 多重割込要求が発生した場合の説明図(そ
の4)である。
FIG. 25 is an explanatory diagram (No. 4) of the case where a multiple interrupt request has occurred.
【図26】 多重割込要求が発生した場合の説明図(そ
の5)である。
FIG. 26 is an explanatory diagram (No. 5) of the case where a multiple interrupt request has occurred;
【図27】 多重割込要求が発生した場合の説明図(そ
の6)である。
FIG. 27 is an explanatory diagram (No. 6) of the case where a multiple interrupt request has occurred;
【図28】 多重割込要求が発生した場合の説明図(そ
の7)である。
FIG. 28 is an explanatory diagram (7) of a case where a multiple interrupt request has occurred;
【図29】 多重割込要求が発生した場合の説明図(そ
の8)である。
FIG. 29 is an explanatory diagram (8) of a case where a multiple interrupt request has occurred;
【図30】 多重割込要求が発生した場合の説明図(そ
の9)である。
FIG. 30 is an explanatory diagram (No. 9) of the case where a multiple interrupt request has occurred;
【図31】 多重割込要求が発生した場合の説明図(そ
の10)である。
FIG. 31 is an explanatory diagram (part 10) of a case where a multiple interrupt request has occurred;
【図32】 多重割込要求が発生した場合の説明図(そ
の11)である。
FIG. 32 is an explanatory view (No. 11) of a case where a multiple interrupt request has occurred;
【図33】 多重割込要求が発生した場合の説明図(そ
の12)である。
FIG. 33 is an explanatory diagram (No. 12) of the case where a multiple interrupt request has occurred;
【図34】 上書き防止処理の説明図(その1)であ
る。
FIG. 34 is an explanatory diagram (part 1) of the overwrite prevention process.
【図35】 上書き防止処理の説明図(その2)であ
る。
FIG. 35 is an explanatory diagram (part 2) of the overwrite prevention process.
【図36】 上書き防止処理の説明図(その3)であ
る。
FIG. 36 is an explanatory diagram (part 3) of the overwrite prevention process.
【図37】 上書き防止処理の説明図(その4)であ
る。
FIG. 37 is an explanatory view (part 4) of the overwrite prevention process.
【図38】 上書き防止処理の説明図(その5)であ
る。
FIG. 38 is an explanatory view (No. 5) of the overwrite prevention processing;
【図39】 上書き防止処理の説明図(その6)であ
る。
FIG. 39 is an explanatory view (No. 6) of the overwrite prevention process.
【図40】 上書き防止処理の説明図(その7)であ
る。
FIG. 40 is an explanatory view (No. 7) of the overwrite prevention process.
【図41】 上書き防止処理の説明図(その8)であ
る。
FIG. 41 is an explanatory view (part 8) of the overwrite prevention process;
【図42】 上書き防止処理の説明図(その9)であ
る。
FIG. 42 is an explanatory view (No. 9) of the overwrite prevention process;
【符号の説明】 40 プロセッサ、50 コプロセッサ(コプロ)。[Description of Signs] 40 processors, 50 coprocessors (Copro).

Claims (12)

    【特許請求の範囲】[Claims]
  1. 【請求項1】 演算部とは別個に演算を行う第2演算部
    を備えた演算実行装置であって、 前記第2演算部は、 演算結果を同時に複数個記憶できるデータ記憶手段と、 前記記憶手段からのデータ読み出し位置を記憶する読み
    出し位置記憶手段と、 起動され、未だその演算結果が読み出されていない演算
    数を記憶する起動演算数記憶手段と、 割込要求があったときに前記読み出し位置記憶手段に記
    憶された読み出し位置及び前記起動演算数記憶手段に記
    憶された演算数を待避させる手段と、 を有し、割込処理を実行して得られる演算結果を読み出
    した後に前記待避させる手段に待避させた前記読み出し
    位置及び演算数を前記読み出し位置記憶手段及び前記起
    動演算数記憶手段に戻し、これらのデータに基づいて演
    算を実行することを特徴とする演算実行装置。
    1. An operation execution device including a second operation unit that performs an operation separately from an operation unit, wherein the second operation unit is capable of storing a plurality of operation results at the same time; Read position storage means for storing a data read position from the means, start operation number storage means for storing an operation number which has been started and the operation result of which has not yet been read out, and said readout when there is an interrupt request Means for saving the readout position stored in the position storage means and the number of operations stored in the activation operation number storage means, wherein the operation result obtained by executing the interrupt processing is read out and then saved. The read position and the operation number saved in the means are returned to the read position storage means and the start operation number storage means, and the operation is performed based on these data. Arithmetic execution unit.
  2. 【請求項2】 請求項1記載の装置において、さらに、 前記割込要求があったときに前記読み出し位置を前記演
    算数に基づいて変更する手段と、 を有し、前記割込処理を実行して得られる演算結果を前
    記変更する手段で変更された読み出し位置に基づいて読
    み出すことを特徴とする演算実行装置。
    2. The apparatus according to claim 1, further comprising: a unit that changes the read position based on the number of operations when the interrupt request is issued, and executes the interrupt processing. A calculation result obtained by reading the calculation result obtained based on the read position changed by the changing unit.
  3. 【請求項3】 請求項1記載の装置において、さらに、 前記割込処理を実行して得られる演算結果を読み出した
    後に前記データ記憶手段に演算結果を書き込む位置を、
    前記待避させる手段から戻した後の前記演算数及び前記
    読み出し位置に応じて変更する手段と、 を有することを特徴とする演算実行装置。
    3. The apparatus according to claim 1, further comprising: a position where the operation result obtained by executing the interrupt processing is written to the data storage unit after the operation result is read.
    Means for changing in accordance with the number of operations returned from the evacuating means and the readout position.
  4. 【請求項4】 請求項1〜3のいずれかに記載の装置に
    おいて、さらに、 前記割込要求があったときに前記演算数をリセットする
    手段と、 を有することを特徴とする演算実行装置。
    4. The apparatus according to claim 1, further comprising: means for resetting the operation number when the interrupt request is issued.
  5. 【請求項5】 請求項1〜3のいずれかに記載の装置に
    おいて、さらに、 前記演算数が前記データ記憶手段のデータ記憶個数に達
    したときに前記第2演算部での新たな演算を禁止する手
    段と、 を有することを特徴とする演算実行装置。
    5. The apparatus according to claim 1, further comprising: prohibiting a new operation in the second operation unit when the number of operations reaches the number of data stored in the data storage unit. An arithmetic execution device, comprising:
  6. 【請求項6】 請求項1〜5のいずれかに記載の装置に
    おいて、 前記データ記憶手段は、FIFOメモリで構成されるこ
    とを特徴とする演算実行装置。
    6. The arithmetic execution device according to claim 1, wherein said data storage means comprises a FIFO memory.
  7. 【請求項7】 請求項1〜6のいずれかに記載の装置に
    おいて、 前記待避させる手段は、前記読み出し位置及び演算数の
    組を同時に複数組記憶できる手段を含み、 前記割込処理を実行して得られる演算結果を読み出す前
    に第2の割込要求があったときに前記割込処理における
    前記読み出し位置及び演算数をさらに待避させることを
    特徴とする演算実行装置。
    7. The apparatus according to claim 1, wherein the means for saving includes means for simultaneously storing a plurality of sets of the read position and the number of operations, and executes the interrupt processing. An operation execution device for further saving the readout position and the number of operations in the interrupt processing when a second interrupt request is issued before the operation result obtained by the operation is read out.
  8. 【請求項8】 プロセッサとは別個に設けられたコプロ
    セッサで演算を実行する方法であって、 前記コプロセッサでの演算実行中に割込要求があったと
    きに、起動され未だその演算結果が読み出されていない
    演算数及び前記コプロセッサ内の演算結果メモリからの
    読み出し位置を待避させるステップと、 前記コプロセッサで前記割込要求による割込演算を実行
    するステップと、 前記割込演算の結果を読み出した後に、待避させた前記
    演算数及び読み出し位置に基づいて前記割込要求前の演
    算を続行するステップと、 を有することを特徴とする演算実行方法。
    8. A method of executing an operation by a coprocessor provided separately from a processor, wherein when an interrupt request is issued during execution of an operation by the coprocessor, the operation result is started and the operation result is still obtained. Saving the number of operations that have not been read and the read position from the operation result memory in the coprocessor; executing an interrupt operation in response to the interrupt request in the coprocessor; and a result of the interrupt operation. After reading out, the step of continuing the operation before the interrupt request based on the saved operation number and the readout position.
  9. 【請求項9】 請求項8記載の方法において、 前記割込要求があったときに、前記読み出し位置を前記
    演算数だけ変更することで前記割込演算の結果を読み出
    すことを特徴とする演算実行方法。
    9. The method according to claim 8, wherein, when the interrupt request is issued, the result of the interrupt operation is read by changing the read position by the operation number. Method.
  10. 【請求項10】 請求項8記載の方法において、 前記割込演算の結果を読み出した後に、前記コプロセッ
    サ内の演算結果メモリへの書き込み位置を前記待避させ
    た前記読み出し位置から前記演算数の個数分シフトさせ
    た位置に変更して演算結果を書き込むことを特徴とする
    演算実行方法。
    10. The method according to claim 8, wherein, after reading the result of the interrupt operation, the number of the operation numbers from the read position where the write position to the operation result memory in the coprocessor is saved. A calculation execution method characterized by writing a calculation result after changing to a position shifted by an amount.
  11. 【請求項11】 請求項8〜10のいずれかに記載の方
    法において、 前記割込要求があったときに、前記演算数をリセットす
    ることを特徴とする演算実行方法。
    11. The operation execution method according to claim 8, wherein the operation number is reset when the interrupt request is issued.
  12. 【請求項12】 請求項8〜10のいずれかに記載の方
    法において、さらに、 前記演算数が所定数に達したことを検出するステップ
    と、 前記所定数に達した場合に新たな演算結果の読み出しが
    完了するまで前記コプロセッサでの新たな演算を禁止す
    るステップと、 を有することを特徴とする演算実行方法。
    12. The method according to claim 8, further comprising: detecting that the number of operations has reached a predetermined number; and detecting a new operation result when the number has reached the predetermined number. Prohibiting new operations in the coprocessor until reading is completed.
JP2000255594A 2000-08-25 2000-08-25 Operation executing device and its method Pending JP2002073332A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000255594A JP2002073332A (en) 2000-08-25 2000-08-25 Operation executing device and its method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000255594A JP2002073332A (en) 2000-08-25 2000-08-25 Operation executing device and its method

Publications (1)

Publication Number Publication Date
JP2002073332A true JP2002073332A (en) 2002-03-12

Family

ID=18744352

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000255594A Pending JP2002073332A (en) 2000-08-25 2000-08-25 Operation executing device and its method

Country Status (1)

Country Link
JP (1) JP2002073332A (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009134499A (en) * 2007-11-30 2009-06-18 Nec Electronics Corp Data processor, and control method for data processor
WO2012120573A1 (en) * 2011-03-04 2012-09-13 日本電気株式会社 Deadlock avoidance method and deadlock avoidance mechanism
JP2015532990A (en) * 2012-09-27 2015-11-16 インテル・コーポレーション Processor having multiple cores, shared core extension logic, and multiple shared core extension use instructions
JP2017538212A (en) * 2014-12-18 2017-12-21 インテル コーポレイション Improved function callback mechanism between central processing unit (CPU) and auxiliary processor

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009134499A (en) * 2007-11-30 2009-06-18 Nec Electronics Corp Data processor, and control method for data processor
WO2012120573A1 (en) * 2011-03-04 2012-09-13 日本電気株式会社 Deadlock avoidance method and deadlock avoidance mechanism
JPWO2012120573A1 (en) * 2011-03-04 2014-07-07 日本電気株式会社 Deadlock avoidance method, deadlock avoidance mechanism
JP5870994B2 (en) * 2011-03-04 2016-03-01 日本電気株式会社 Deadlock avoidance method, deadlock avoidance mechanism
US9405549B2 (en) 2011-03-04 2016-08-02 Nec Corporation Deadlock avoidance method and deadlock avoidance mechanism
JP2015532990A (en) * 2012-09-27 2015-11-16 インテル・コーポレーション Processor having multiple cores, shared core extension logic, and multiple shared core extension use instructions
US9582287B2 (en) 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
JP2017224342A (en) * 2012-09-27 2017-12-21 インテル・コーポレーション Processor and apparatus
US10061593B2 (en) 2012-09-27 2018-08-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US10901748B2 (en) 2012-09-27 2021-01-26 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US10963263B2 (en) 2012-09-27 2021-03-30 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
JP2017538212A (en) * 2014-12-18 2017-12-21 インテル コーポレイション Improved function callback mechanism between central processing unit (CPU) and auxiliary processor

Similar Documents

Publication Publication Date Title
US5398330A (en) Register file backup queue
EP0328721B1 (en) Dynamic multiple instruction stream multiple data multiple pipeline floatingpoint unit
US5197138A (en) Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching
US7020871B2 (en) Breakpoint method for parallel hardware threads in multithreaded processor
US8004533B2 (en) Graphics input command stream scheduling method and apparatus
US5590294A (en) Method and apparatus for retarting pipeline processing
JP2925818B2 (en) Parallel processing controller
GB2339312A (en) Handling exceptions in a pipelined processor.
JPH06195229A (en) Apparatus for interrupt handling in pipeline processor
JP3510729B2 (en) Instruction execution method and instruction execution device
JP2002073332A (en) Operation executing device and its method
EP0987624B1 (en) Method and system for buffering instructions in a processor
US7539847B2 (en) Stalling processor pipeline for synchronization with coprocessor reconfigured to accommodate higher frequency operation resulting in additional number of pipeline stages
JPH09198257A (en) Program executing method and program executing device using this method
JP2552738B2 (en) Data processing device
JP2824484B2 (en) Pipeline processing computer
JP5185478B2 (en) Pipeline processing method and pipeline processing apparatus using the method
JP3630904B2 (en) Calculation execution method and calculation execution apparatus
JP2007018497A (en) Risc microprocessor priority vector interrupt system
JP3798180B2 (en) Method and system for buffering instructions in a processor
JP2002351658A (en) Arithmetic processor
JP2002196938A (en) Device for exception handling flow and its handling execution method
EP0989486A1 (en) System and method for executing instructions in a pipelined processor
JPH07200294A (en) Processor device provided with delay branch execution function
JPH08227360A (en) Information processor