JPH0419576B2 - - Google Patents
Info
- Publication number
- JPH0419576B2 JPH0419576B2 JP61011262A JP1126286A JPH0419576B2 JP H0419576 B2 JPH0419576 B2 JP H0419576B2 JP 61011262 A JP61011262 A JP 61011262A JP 1126286 A JP1126286 A JP 1126286A JP H0419576 B2 JPH0419576 B2 JP H0419576B2
- Authority
- JP
- Japan
- Prior art keywords
- array
- data
- check
- range
- index
- 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.)
- Expired - Lifetime
Links
- 239000004065 semiconductor Substances 0.000 claims description 2
- 239000000758 substrate Substances 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000034 method Methods 0.000 description 1
Landscapes
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Microcomputers (AREA)
Description
【発明の詳細な説明】
〔発明の技術分野〕
本発明は電子計算機の中央処理装置(CPU)
に係り、たとえば1チツプ化されたマイクロコン
ピユータに適用されるものである。
に係り、たとえば1チツプ化されたマイクロコン
ピユータに適用されるものである。
〔発明の技術的背景〕
第2図は従来のマイクロコンピユータにおける
一部を示しており、1はマイクロプロセツサ
MPU部、2は主メモリである。上記MPU部1に
おいて、3〜5は汎用演算レジスタ、6は演算処
理装置(ALU)、7はインストラクシヨンレジス
タ(命令レジスタ)、8はプログラムカウンタ、
9はアドレスレジスタ、10〜16はデータバ
ス、17はアドレスバス、18は前記命令レジス
タ7に格納される命令コードを解読して制御信号
を発生する命令デコーダである。
一部を示しており、1はマイクロプロセツサ
MPU部、2は主メモリである。上記MPU部1に
おいて、3〜5は汎用演算レジスタ、6は演算処
理装置(ALU)、7はインストラクシヨンレジス
タ(命令レジスタ)、8はプログラムカウンタ、
9はアドレスレジスタ、10〜16はデータバ
ス、17はアドレスバス、18は前記命令レジス
タ7に格納される命令コードを解読して制御信号
を発生する命令デコーダである。
上記マイクロコンピユータにおける動作はよく
知られているので、ここでは一般的な動作説明を
省略する。
知られているので、ここでは一般的な動作説明を
省略する。
ところで、計算機で扱かうデータの一種に配列
変数がある。この配列変数は、一般的には、一次
元配列の場合は A(dl:du) 但し、dlは下限、duは上限と表現され、多次元
配列(n次元配列)の場合には A(dl1:du1、dl2:du2、…dln:dun) と表現される。そして、プログラム中において、
上記配列変数により規定される配列レンジ1〜u
のうちの特定領域xのデータ、たとえば一次元配
列データA(x)を参照するには、配列添字(イ
ンデツクス)xの値は dl≦x≦du という条件、つまり配列インデツクスxの値が配
列レンジ(1〜u)内に存在するという条件を満
たしていなければならない。この場合、プログラ
ム言語のうち高級言語の一種であるフオートラン
(FORTRAN)の低レベルのものにあつては配列
レンジの下限値dlは1である。
変数がある。この配列変数は、一般的には、一次
元配列の場合は A(dl:du) 但し、dlは下限、duは上限と表現され、多次元
配列(n次元配列)の場合には A(dl1:du1、dl2:du2、…dln:dun) と表現される。そして、プログラム中において、
上記配列変数により規定される配列レンジ1〜u
のうちの特定領域xのデータ、たとえば一次元配
列データA(x)を参照するには、配列添字(イ
ンデツクス)xの値は dl≦x≦du という条件、つまり配列インデツクスxの値が配
列レンジ(1〜u)内に存在するという条件を満
たしていなければならない。この場合、プログラ
ム言語のうち高級言語の一種であるフオートラン
(FORTRAN)の低レベルのものにあつては配列
レンジの下限値dlは1である。
ところで、上記しような配列インデツクスx
の値が配列レンジ内に存在するか否かのチエツク
は、チエツク処理のための所要時間、演算速度、
演算結果の信頼性等を考慮して採否が決められ
る。即ち、演算速度に重点を置いていない言語
(BASICなど)とか演算結果の信頼性に重点を置
いている言語(PASCALなど)では、上記チエ
ツク処理に伴なう本来の演算処理の犠牲を払つて
も自動チエツク処理を行なつているが、ミニコン
ピユータ用のFORTRAN言語の高レベルのもの
は上記自動チエツク処理を行なわずに演算速度を
重視している。
の値が配列レンジ内に存在するか否かのチエツク
は、チエツク処理のための所要時間、演算速度、
演算結果の信頼性等を考慮して採否が決められ
る。即ち、演算速度に重点を置いていない言語
(BASICなど)とか演算結果の信頼性に重点を置
いている言語(PASCALなど)では、上記チエ
ツク処理に伴なう本来の演算処理の犠牲を払つて
も自動チエツク処理を行なつているが、ミニコン
ピユータ用のFORTRAN言語の高レベルのもの
は上記自動チエツク処理を行なわずに演算速度を
重視している。
したがつて、上記自動チエツク処理を行なわな
い言語によるコンピユータシステムの使用に際し
て、ユーザが上記配列インデツクスの正否のチエ
ツクを欲する場合にはプログラム中にインデツク
スチエツク処理ルーチンを設ける必要がある。
い言語によるコンピユータシステムの使用に際し
て、ユーザが上記配列インデツクスの正否のチエ
ツクを欲する場合にはプログラム中にインデツク
スチエツク処理ルーチンを設ける必要がある。
換言すれば、従来のコンピユータシステムにあ
つては、配列インデツクスの正否のチエツクに伴
なつて演算結果の高信頼性化と演算速度の低下と
いう二律相反的な問題が生じる。
つては、配列インデツクスの正否のチエツクに伴
なつて演算結果の高信頼性化と演算速度の低下と
いう二律相反的な問題が生じる。
本発明は上記の事情に鑑みてなされたもので、
配列インデツクスと配列レンジとの関係について
の正否チエツクを高速に自動的に実行可能であ
り、演算処理に負担をかけることなく信頼性の高
い演算処理が可能な中央処理装置を提供するもの
である。
配列インデツクスと配列レンジとの関係について
の正否チエツクを高速に自動的に実行可能であ
り、演算処理に負担をかけることなく信頼性の高
い演算処理が可能な中央処理装置を提供するもの
である。
本発明の中央処理装置は、n次元の配列変数参
照文における各次元毎に配列インデツクスデータ
および配列レンジデータの比較によりインデツク
スの正否チエツクを行ない専用のチエツク回路を
設け、上記チエツク処理を一般の演算処理と並列
に行なうように制御することを特徴とするもので
ある。
照文における各次元毎に配列インデツクスデータ
および配列レンジデータの比較によりインデツク
スの正否チエツクを行ない専用のチエツク回路を
設け、上記チエツク処理を一般の演算処理と並列
に行なうように制御することを特徴とするもので
ある。
したがつて、配列インデツクスと配列レンジと
の関係についての正否チエツクを高速に自動的に
実行可能であり、演算処理に負担をかけることな
く信頼性の高い演算処理が可能になる。
の関係についての正否チエツクを高速に自動的に
実行可能であり、演算処理に負担をかけることな
く信頼性の高い演算処理が可能になる。
以下、図面を参照して本発明の一実施例を詳細
に説明する。
に説明する。
第1図は電子計算機の一部を示しており、
MPU部1'は第2図を参照して前述したMPU部
1に比べて、n次元配列の各次元に対応して複数
組(本例では3組)の配列インデツクスチエツク
回路201,202,203が付加された点、およ
びこれに関連して命令デコーダ18′による制御
機能が異なり、その他は同じであるので第2図中
と同一符号を付している。
MPU部1'は第2図を参照して前述したMPU部
1に比べて、n次元配列の各次元に対応して複数
組(本例では3組)の配列インデツクスチエツク
回路201,202,203が付加された点、およ
びこれに関連して命令デコーダ18′による制御
機能が異なり、その他は同じであるので第2図中
と同一符号を付している。
上記配列インデツクスチエツク回路201,2
02,203は、各対応して一次元配列、二次元配
列、三次元配列のチエツクを行なうためのもので
あり、それぞれ配列インデツクスデータを格納す
るインデツクスレジスタ21と、配列レンジの下
限値データを格納する下限値レジスタ22と、配
列レンジの上限値データを格納する上限値レジス
タ23と、上記インデツクスレジスタ21のデー
タxを下限値レジスタ22のデータdl、上限値レ
ジスタ23のデータduと比較してdl<xまたはx
>duのときにエラー出力を発生する比較回路2
4と、命令デコーダ18′からの制御信号出力の
一部をタイミングをとるために所定時間遅延させ
る遅延回路25と、この遅延回路25の出力信号
のタイミングで前記比較回路24のエラー出力を
ラツチし、ラツチ出力を割込み信号とするフリツ
プフロツプ回路26とを有する。
02,203は、各対応して一次元配列、二次元配
列、三次元配列のチエツクを行なうためのもので
あり、それぞれ配列インデツクスデータを格納す
るインデツクスレジスタ21と、配列レンジの下
限値データを格納する下限値レジスタ22と、配
列レンジの上限値データを格納する上限値レジス
タ23と、上記インデツクスレジスタ21のデー
タxを下限値レジスタ22のデータdl、上限値レ
ジスタ23のデータduと比較してdl<xまたはx
>duのときにエラー出力を発生する比較回路2
4と、命令デコーダ18′からの制御信号出力の
一部をタイミングをとるために所定時間遅延させ
る遅延回路25と、この遅延回路25の出力信号
のタイミングで前記比較回路24のエラー出力を
ラツチし、ラツチ出力を割込み信号とするフリツ
プフロツプ回路26とを有する。
一方、命令デコーダ18′は、配列レンジチエ
ツク命令コードを解読したとき、この命令コード
に係る配列変数における配列インデツクスデー
タ、下限値データ、上限値データをデータライン
27,28,29を通じて汎用レジスタから前記
インデツクスレジスタ21、下限値レジスタ2
2、上限値レジスタ23に取り込むための制御信
号を出力する機能を有する。この場合、命令コー
ドにより表わされる一次元配列または二次元配列
または三次元配列に応じて3組の配列インデツク
スチエツク回路201,202,203の一部また
は全部に対する制御を順次行なうように制御信号
を出力するものである。
ツク命令コードを解読したとき、この命令コード
に係る配列変数における配列インデツクスデー
タ、下限値データ、上限値データをデータライン
27,28,29を通じて汎用レジスタから前記
インデツクスレジスタ21、下限値レジスタ2
2、上限値レジスタ23に取り込むための制御信
号を出力する機能を有する。この場合、命令コー
ドにより表わされる一次元配列または二次元配列
または三次元配列に応じて3組の配列インデツク
スチエツク回路201,202,203の一部また
は全部に対する制御を順次行なうように制御信号
を出力するものである。
なお、上記配列レンジチエツク命令コードは、
たとえばFORTRAN言語によるソースプログラ
ムのコンパイルに際して、ソースプログラムに配
列変数参照文が含まれる場合にそのオブジエクト
プログラムに含まれるものである。即ち、次のよ
うなFORTRANで記述されたステートメントを
処理することを考える。
たとえばFORTRAN言語によるソースプログラ
ムのコンパイルに際して、ソースプログラムに配
列変数参照文が含まれる場合にそのオブジエクト
プログラムに含まれるものである。即ち、次のよ
うなFORTRANで記述されたステートメントを
処理することを考える。
SUBROUTINE(DIM、MDIM1、
MDIM2、MDIM3、…)
DIMENSION DIN(MDIM1、
MDIM2、MDIM3)
〓
DIM(KKK、LLL、MMM)=10
ここで、DIMは配列変数名、MDIM1、
MDIM2、MDIM3はそれぞれ三次元配列におけ
る各次元の配列容量、KKK、LLL、MMMはそ
れぞれ三次元配列における各次元の配列インデツ
クスである。そして、コンパイラにより上記ステ
ートメントのDIM(KKK、LLL、MMM)=10に
対して次のような命令列が生成される。但し、実
際の機械語命令列はもつと詳細に分解されたもの
であるが、ここでは説明を分り易くするために簡
略的に表現している。
MDIM2、MDIM3はそれぞれ三次元配列におけ
る各次元の配列容量、KKK、LLL、MMMはそ
れぞれ三次元配列における各次元の配列インデツ
クスである。そして、コンパイラにより上記ステ
ートメントのDIM(KKK、LLL、MMM)=10に
対して次のような命令列が生成される。但し、実
際の機械語命令列はもつと詳細に分解されたもの
であるが、ここでは説明を分り易くするために簡
略的に表現している。
check range1 KKK、1、MDIM1 ……
check range2 LLL、1、MDIM2 ……
check range3 MMM、1、MDIM3 ……
(DIM)+KKK+MDIM2×MDIM3→Rφ……
10→Rφ ……
ここで、、、は三次元配列の各次元の配
列インデツクスKKK、LLL、MMMがそれぞれ
配列レンジ内(1〜MDIM1、1〜MDIM2、1
〜MDIM3)に存在するか否かのチエツク処理の
起動命令、は配列変数DIMのデータ領域の先
頭アドレス(DIM)と配列インデツクスKKK、
LLL、MMMにより指定された領域までのアド
レス数(KKK+MDIM2×MDIM3)との加算を
行なつてレジスタRφに実アドレスを格納する処
理命令、は上記レジスタRφに格納されたデー
タにより指定される主メモリ2内のアドレス位置
(は間接アドレス)にデータ10を格納する処
理命令を表わしている。
列インデツクスKKK、LLL、MMMがそれぞれ
配列レンジ内(1〜MDIM1、1〜MDIM2、1
〜MDIM3)に存在するか否かのチエツク処理の
起動命令、は配列変数DIMのデータ領域の先
頭アドレス(DIM)と配列インデツクスKKK、
LLL、MMMにより指定された領域までのアド
レス数(KKK+MDIM2×MDIM3)との加算を
行なつてレジスタRφに実アドレスを格納する処
理命令、は上記レジスタRφに格納されたデー
タにより指定される主メモリ2内のアドレス位置
(は間接アドレス)にデータ10を格納する処
理命令を表わしている。
次に、上記マイクロコンピユータにおけるプロ
グラム実行時の配列参照処理動作の一例を説明す
る。前記の命令がフエツチされて命令レジスタ
7に格納され、これを命令デコード18′が解読
すると、この命令の処理に必要な制御信号群を発
生する。この制御信号群の一部の信号は、前記配
列インデツクスチエツク回路201のインデツク
スレジスタ21、下限値レジスタ22、上限値レ
ジスタ23に各対応してKKK、1、MDIM1の
データをセツトする。上記各データは比較回路2
4へ転送され、ここでレンジチエツクが行なわ
れ、インデツクスとレンジとの関係に誤りがあれ
ばエラー出力“1”が発生する。このエラー出力
は遅延回路25からのタイミング信号によりフリ
ツプフロツプ回路26にセツトされ、このフリツ
プフロツプ回路26のセツト出力はMPU1′の割
込線30に出力する。上記と同様に、配列インデ
ツクスチエツク回路202,203でもレンジチエ
ツクが行なわれ、エラー出力が発生すればエラー
出力“1”が割込線(図示せず)に出力する。こ
のようなレンジチエツクが専用のチエツク回路2
01,202,203で行なわれているときに、
MPU1′では前記の処理が並列に実行される。
即ち、前記〜の処理が並列に行なわれるの
で、上記のようなチエツク処理により演算処理の
信頼性が向上するにも拘らず、本来の演算処理に
負担をかけることなく演算速度の低下に及ぼす影
響は殆んど生じない。そして、上記各チエツク回
路201,202,203からエラー出力が生じな
いときには引き続き前記の処理が行なわれ、チ
エツク回路201,202,203のいずれか1つ
からでもエラー出力が発生するとMPUによる割
込処理が行なわれる。この場合、上記割込処理の
意味は広義であり、たとえばFORTRAN言語の
高級レベルのものが有する割込信号の種類に応じ
て適切な措置をとるようにユーザが作成したプロ
グラムに基づく処理、所謂例外処理を行なわせる
ことも可能である。
グラム実行時の配列参照処理動作の一例を説明す
る。前記の命令がフエツチされて命令レジスタ
7に格納され、これを命令デコード18′が解読
すると、この命令の処理に必要な制御信号群を発
生する。この制御信号群の一部の信号は、前記配
列インデツクスチエツク回路201のインデツク
スレジスタ21、下限値レジスタ22、上限値レ
ジスタ23に各対応してKKK、1、MDIM1の
データをセツトする。上記各データは比較回路2
4へ転送され、ここでレンジチエツクが行なわ
れ、インデツクスとレンジとの関係に誤りがあれ
ばエラー出力“1”が発生する。このエラー出力
は遅延回路25からのタイミング信号によりフリ
ツプフロツプ回路26にセツトされ、このフリツ
プフロツプ回路26のセツト出力はMPU1′の割
込線30に出力する。上記と同様に、配列インデ
ツクスチエツク回路202,203でもレンジチエ
ツクが行なわれ、エラー出力が発生すればエラー
出力“1”が割込線(図示せず)に出力する。こ
のようなレンジチエツクが専用のチエツク回路2
01,202,203で行なわれているときに、
MPU1′では前記の処理が並列に実行される。
即ち、前記〜の処理が並列に行なわれるの
で、上記のようなチエツク処理により演算処理の
信頼性が向上するにも拘らず、本来の演算処理に
負担をかけることなく演算速度の低下に及ぼす影
響は殆んど生じない。そして、上記各チエツク回
路201,202,203からエラー出力が生じな
いときには引き続き前記の処理が行なわれ、チ
エツク回路201,202,203のいずれか1つ
からでもエラー出力が発生するとMPUによる割
込処理が行なわれる。この場合、上記割込処理の
意味は広義であり、たとえばFORTRAN言語の
高級レベルのものが有する割込信号の種類に応じ
て適切な措置をとるようにユーザが作成したプロ
グラムに基づく処理、所謂例外処理を行なわせる
ことも可能である。
上述したように本発明の中央処理装置によれ
ば、配列変数のインデツクスとレンジとの関係の
正否をチエツクするための専用の配列インデツク
スチエツク回路を備えており、上記チエツクを一
般の演算処理と並列に行なうように制御するの
で、本来の演算処理に負担をかけることなく、信
頼性の高い演算処理を高速に行なうことができ
る。また、上記中央処理装置の全ての構成要素を
1チツプ(単一半導体基板)上に集積回路化して
高速動作化を図ることにより、上記チエツク処理
の一層の高速化を図ることができる。また、前記
チエツク回路は、n次元の配列変数参照文におけ
る各次元毎のチエツクを行ない得るようにn個設
けられるが、利用頻度とかハードウエア量などを
考慮した場合、MPUの性能対コスト比の点で3
次元配列までの処理を行なうように3個設けるこ
とが望ましい。
ば、配列変数のインデツクスとレンジとの関係の
正否をチエツクするための専用の配列インデツク
スチエツク回路を備えており、上記チエツクを一
般の演算処理と並列に行なうように制御するの
で、本来の演算処理に負担をかけることなく、信
頼性の高い演算処理を高速に行なうことができ
る。また、上記中央処理装置の全ての構成要素を
1チツプ(単一半導体基板)上に集積回路化して
高速動作化を図ることにより、上記チエツク処理
の一層の高速化を図ることができる。また、前記
チエツク回路は、n次元の配列変数参照文におけ
る各次元毎のチエツクを行ない得るようにn個設
けられるが、利用頻度とかハードウエア量などを
考慮した場合、MPUの性能対コスト比の点で3
次元配列までの処理を行なうように3個設けるこ
とが望ましい。
第1図は本発明の中央処理装置の一実施例を示
すブロツク図、第2図は従来の中央処理装置を示
すブロツク図である。 1′……MPU、18′……命令デコーダ、20
1,202,203……配列インデツクスチエツク
回路。
すブロツク図、第2図は従来の中央処理装置を示
すブロツク図である。 1′……MPU、18′……命令デコーダ、20
1,202,203……配列インデツクスチエツク
回路。
Claims (1)
- 【特許請求の範囲】 1 n次元の配列変数参照文における各次元毎の
配列インデツクスデータおよび配列レンジデータ
が入力し、各次元毎に配列インデツクスデータの
値が配列レンジデータのレンジ内にあるか否かを
チエツクし、レンジ外にある場合にエラー出力を
発生するためのn個の配列インデツクスチエツク
回路と、n次元の配列変数参照文処理命令に基い
て上記n個の配列インデツクスチエツク回路の一
部または全部を並列に動作させるように制御する
制御手段とを具備することを特徴とする中央処理
装置。 2 前記配列インデツクスチエツク回路は3個設
けられていることを特徴とする前記特許請求の範
囲第1項記載の中央処理装置。 3 単一半導体基板上に構成されてなることを特
徴とする前記特許請求の範囲第1項または第2項
記載の中央処理装置。 4 前記エラー出力に基いて割込処理を行なうよ
うにしてなること特徴とするを前記特許請求の範
囲第1項記載の中央処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP61011262A JPS62169237A (ja) | 1986-01-22 | 1986-01-22 | 中央処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP61011262A JPS62169237A (ja) | 1986-01-22 | 1986-01-22 | 中央処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS62169237A JPS62169237A (ja) | 1987-07-25 |
| JPH0419576B2 true JPH0419576B2 (ja) | 1992-03-30 |
Family
ID=11773036
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP61011262A Granted JPS62169237A (ja) | 1986-01-22 | 1986-01-22 | 中央処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS62169237A (ja) |
-
1986
- 1986-01-22 JP JP61011262A patent/JPS62169237A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS62169237A (ja) | 1987-07-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5115510A (en) | Multistage data flow processor with instruction packet, fetch, storage transmission and address generation controlled by destination information | |
| US4870562A (en) | Microcomputer capable of accessing internal memory at a desired variable access time | |
| US4924382A (en) | Debugging microprocessor capable of switching between emulation and monitor without accessing stack area | |
| US5347636A (en) | Data processor which efficiently accesses main memory and input/output devices | |
| US4539635A (en) | Pipelined digital processor arranged for conditional operation | |
| US4926318A (en) | Micro processor capable of being connected with a coprocessor | |
| US5063498A (en) | Data processing device with direct memory access function processed as an micro-code vectored interrupt | |
| US5757685A (en) | Data processing system capable of processing long word data | |
| US4747045A (en) | Information processing apparatus having an instruction prefetch circuit | |
| JPS61204758A (ja) | コ・プロセツサ制御方式 | |
| US4598358A (en) | Pipelined digital signal processor using a common data and control bus | |
| US5742842A (en) | Data processing apparatus for executing a vector operation under control of a master processor | |
| US5390306A (en) | Pipeline processing system and microprocessor using the system | |
| US5938758A (en) | Microprocessor having function of prefetching instruction | |
| US4785414A (en) | Computer system with automatic range checking and conversion of data words | |
| JPH0419576B2 (ja) | ||
| KR910001708B1 (ko) | 중앙처리장치 | |
| EP0265948B1 (en) | Data processor capable of immediately calculating branch address in relative address branch | |
| US4991130A (en) | Normalization control system for floating point arithmetic operation | |
| JPH02123442A (ja) | 高速化メモリ | |
| JPS594049B2 (ja) | コンピュ−タ装置 | |
| JP2894854B2 (ja) | 中央演算処理装置 | |
| US5768554A (en) | Central processing unit | |
| JP3239042B2 (ja) | マイクロコンピュータ | |
| JP3014701B2 (ja) | 情報処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| EXPY | Cancellation because of completion of term |