(57)【特許請求の範囲】
【請求項１】
計算機で用いられるｎビットのカウンタからなるタイマーであって，ｎビットのうちの下位ｍ（ｍ＜ｎ）ビットがハードウェアカウンタで構成され，上位（ｎ−ｍ）ビットがファームウェアの作業領域を利用して構成されるタイマーを持ち，前記下位ｍビットのハードウェアカウンタが所定の値になったときに更新要求信号を発生させ，ファームウェアによって前記上位（ｎ−ｍ）ビットを更新するタイマー更新アシスト方法において，
前記更新要求信号を上位（ｎ−ｍ）ビット分拡張した信号を用いて，前記ファームウェアの作業領域に保持するタイマー値との演算を行い，ファームウェアの作業領域を更新することを特徴とするタイマー更新アシスト方法。
【請求項２】
ｍビットのハードウェアカウンタ（１０）と，（ｎ−ｍ）ビットのファームウェアの作業領域（１１）とにより，ｎビットのタイマーを構成するタイマー装置において，
前記ハードウェアカウンタが所定の値に変化したときに発生する更新要求信号を保持する回路（１３）と，
前記更新要求信号を（ｎ−ｍ）ビットに拡張するデータ拡張回路（１４）と，
前記データ拡張回路により拡張したデータを付加したタイマー値と，前記ファームウェアの作業領域のデータを含むタイマー値とを加算する回路（１７）とを備えたことを特徴とするタイマー装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は，ＣＰＵの実行時間や待ち時間を制御する各種タイマー機構を装備し，かつ各種タイマー機構の任意のビットより上位に位置するビットをハードウェアで持たずに，マイクロプログラム等のファームウェアの作業領域を利用してマイクロプログラム等のファームウェアが制御を行う計算機におけるタイマー更新アシスト方法およびタイマー装置に関するものである。
【０００２】
一般に計算機システムでは，処理の高速化および装置の小型化が望まれており，タイマー機構についても同様に高速化，小型化が望まれている。
【０００３】
【従来の技術】
図５は従来のタイマーの例を示す。
従来の計算機システムでは，図５（イ）に示すように，ＣＰＵの実行時間や待ち時間を制御するタイマー機構のすべてのビットを，すべてハードウェア・ロジック５０として持つ方式と，図５（ロ）に示すように，すべてのビットをハードウェアで持つのではなく，あるビットより上位のビットをマイクロプログラムの作業領域５１に置き，下位ビットだけをハードウェア・ロジック５３として持ち，マイクロプログラムがハードウェアの状態を監視して，ハードウェア・ロジック５３の桁溢れによる更新要求フラグ５２が“１”（ＯＮ）になったときに，上位のビットを制御する方式がある。
【０００４】
大型の計算機では前者の方法が用いられるが，一般に中小型の計算機では，ハードウェア量がかなり制限されるため，すべてのビットをハードウェアで持つ方式は，あまり用いられていない。図５（ロ）に示す例では，０から５５までの５６ビットのうち，上位の３２ビットをマイクロプログラムの作業領域５１に置き，下位の２４ビットをハードウェア・ロジック５３として持っている。以下の例では，減算方式のタイマーの例について説明する。
【０００５】
図６は，タイマー機構の上位ビットをマイクロプログラムの作業領域に持つ場合のマイクロプログラムの処理フローチャートであって，（イ）はタイマー更新要求の処理，（ロ）はタイマー読み出し命令の処理を示す。
【０００６】
図５（ロ）に示すハードウェア・ロジック５３のカウント値が（００００００）１６から（ＦＦＦＦＦＦ）１６に変化すると，更新要求フラグ５２が“１”になり，マイクロプログラムに対してタイマー更新要求が出される。なお，（ＸＸ…）１６は１６進数を表す。以下の説明における（ａ）  〜（ｃ）  は，図６（イ）に示す（ａ）  〜（ｃ）  に対応する。
【０００７】
（ａ）  更新要求フラグ５２が“１”になると，マイクロプログラムは，マイクロプログラムの作業領域５１にあるタイマー上位ビットを読み出す。
（ｂ）  読み出した上位ビットのデータから１を減算する。
【０００８】
（ｃ）  減算した結果をマイクロプログラムの作業領域５１に書き込む。
オペレーティング・システム等によりタイマー読み出し命令が発行されると，マイクロプログラムは，図６（ロ）に示す処理（ｄ）  〜（ｋ）  を実行する。
【０００９】
（ｄ）  マイクロプログラムの作業領域５１の上位ビットを読み出す。
（ｅ）  次に，ハードウェア・ロジック５３の下位ビットを読み出す。
（ｆ）  また，ハードウェア・ロジックの更新要求フラグ５２を読み出す。
【００１０】
（ｇ）  更新要求フラグ５２が“１”であるか否かを判定し，“１”でなければ処理（ｉ）  へ進む。
（ｈ）  更新要求フラグ５２が“１”であれば，作業領域５１から読み出した上位ビットから１を引く。
【００１１】
（ｉ）  次に，上位ビットと下位ビットの加算処理を行う。
（ｊ）  マイクロプログラムの作業領域５１に上位ビットを書き込む。
（ｋ）  タイマー読み出し命令で指定されたオペランド領域に，（ｉ）  の処理結果を書き込む。
【００１２】
【発明が解決しようとする課題】
従来の計算機では，図６に示すように，マイクロプログラムがタイマー読み出し命令を実行する場合に，ハードウェア・ロジック５３が持っている最上位のビットからのタイマー更新要求信号である更新要求フラグ５２を読み出し，それを判定してマイクロプログラムの作業領域５１に保持する上位ビットの減算処理を行う必要があった。これは，タイマー読み出し命令の実行中に，タイミングによっては更新要求フラグ５２が“１”になることがあり，下位ビットからの桁溢れが上位ビットに反映されないことがあるためである。そのため，マイクロプログラムのスタティックな命令ステップ数およびダイナミックステップ数を増加させることになった。
【００１３】
本発明は上記問題点の解決を図り，マイクロプログラムの命令格納領域を小さくするとともに，マイクロプログラムのダイナミックステップ数を削減することを目的する。
【００１４】
【課題を解決するための手段】
本発明では，例えば図１に示すように，タイマーの更新要求フラグ１３の値を拡張するデータ拡張回路１４を設け，ハードウェアが持つＣＰＵタイマー（下位ビット）１０を読み出すときに，マイクロプログラム作業レジスタ（Ａ）１５の上位に，更新要求フラグ１３の値を上位ビット数分展開したデータを付加する。また，マイクロプログラム作業レジスタ（Ｂ）１６にマイクロプログラム作業領域１１のＣＰＵタイマー（上位ビット）１２の値を読み出し，この値と，先のマイクロプログラム作業レジスタ（Ａ）１５の値とを，加算演算器（ＡＤＤＥＲ）１７により加算する。加算結果をマイクロプログラム作業レジスタ（Ｃ）１８に格納し，この値をタイマー読み出し命令の発行元へ通知する。
【００１５】
【作用】
データ拡張回路１４により，更新要求フラグ１３が“０”のときには，上位ビットに（００００００００）１６を載せ，更新要求フラグ１３が“１”のときには，上位ビットに（ＦＦＦＦＦＦＦＦ）１６を載せるので，更新要求フラグ１３の値によらずに，一律に処理することができる。
【００１６】
【実施例】
図１は本発明の構成例を示す。
本実施例のタイマーは減算方式のＣＰＵタイマーであり，５６ビットで構成され，そのうちの上位３２ビットがマイクロプログラム作業領域１１にＣＰＵタイマー（上位ビット）１２として設けられ，下位の２４ビットがハードウェア・ロジックによるＣＰＵタイマー（下位ビット）１０として設けられている。更新要求フラグ１３は，ＣＰＵタイマー（下位ビット）１０の最上位のビットからの更新要求信号を保持する回路である。ＣＰＵタイマー（下位ビット）１０の値が（００００００）１６から（ＦＦＦＦＦＦ）１６の値に変化するときに“１”にセットされる。
【００１７】
データ拡張回路１４は，更新要求フラグ１３の値を３２ビットに拡張する回路である。ＣＰＵタイマー（下位ビット）１０をマイクロプログラム作業レジスタ（Ａ）１５に読み出すとき，ＣＰＵタイマー（下位ビット）１０の値を，マイクロプログラム作業レジスタ（Ａ）１５の第３２ビットから第５５ビットにロードするとともに，更新要求フラグ１３をデータ拡張回路１４に拡張して，マイクロプログラム作業レジスタ（Ａ）１５の第０ビットから第３１ビットにロードする。このデータの拡張は，更新要求フラグ１３が“０”のときには，（００００００００）１６とし，更新要求フラグ１３が“１”のときには，（ＦＦＦＦＦＦＦＦ）１６とする。
【００１８】
マイクロプログラム作業領域１１に設けられたＣＰＵタイマー（上位ビット）１２は，マイクロプログラム作業レジスタ（Ｂ）１６の第０ビットから第３１ビットにロードされる。
【００１９】
加算演算器１７は，マイクロプログラム作業レジスタ（Ａ）１５とマイクロプログラム作業レジスタ（Ｂ）１６の値を加算し，結果をマイクロプログラム作業レジスタ（Ｃ）１８に出力する。
【００２０】
図２は，本発明の実施例によるマイクロプログラムの処理フローチャートである。
タイマー更新要求時，すなわち更新要求フラグ１３が“１”になると，割込み等によりマイクロプログラムのタイマー更新処理が起動される。ここでは，図２（イ）に示す処理（ａ）  〜（ｄ）  を実行する。
【００２１】
（ａ）  マイクロプログラム作業領域１１に設けたＣＰＵタイマー（上位ビット）１２をマイクロプログラム作業レジスタ（Ｂ）１６に読み出す。
（ｂ）  また，ハードウェア・ロジックのＣＰＵタイマー（下位ビット）１０を，拡張した更新要求フラグ１３のデータとともにマイクロプログラム作業レジスタ（Ａ）１５に読み出す。
【００２２】
（ｃ）  マイクロプログラム作業レジスタ（Ａ）１５の値と，マイクロプログラム作業レジスタ（Ｂ）１６の値とを加算し，マイクロプログラム作業レジスタ（Ｃ）１８に結果を格納する。
【００２３】
（ｄ）  マイクロプログラム作業レジスタ（Ｃ）１８の上位３２ビットを，ＣＰＵタイマー（上位ビット）１２の領域に書き込む。
タイマー読み出し命令に対しては，マイクロプログラムは図２（ロ）に示す処理（ｅ）  〜（ｉ）  を実行する。
【００２４】
（ｅ）  マイクロプログラム作業領域１１に設けたＣＰＵタイマー（上位ビット）１２をマイクロプログラム作業レジスタ（Ｂ）１６に読み出す。
（ｆ）  また，ハードウェア・ロジックのＣＰＵタイマー（下位ビット）１０を，拡張した更新要求フラグ１３のデータとともにマイクロプログラム作業レジスタ（Ａ）１５に読み出す。
【００２５】
（ｇ）  マイクロプログラム作業レジスタ（Ａ）１５の値と，マイクロプログラム作業レジスタ（Ｂ）１６の値とを加算し，マイクロプログラム作業レジスタ（Ｃ）１８に結果を格納する。
【００２６】
（ｈ）  マイクロプログラム作業レジスタ（Ｃ）１８の上位３２ビットを，ＣＰＵタイマー（上位ビット）１２の領域に書き込む。
（ｉ）  マイクロプログラム作業レジスタ（Ｃ）１８の上位３２ビットを，タイマー読み出し命令で指定されたオペランド領域に書き込む。
【００２７】
上記処理から明らかなように，（ａ）  〜（ｄ）  の処理と（ｅ）  〜（ｈ）  の処理とは共通化可能である。
図３は，本発明の実施例におけるタイマー更新要求なしのときの実行例を示す。
【００２８】
今，ＣＰＵタイマー（上位ビット）１２のカウント値が（ＡＡＡＡＡＡＡＡ）１６であり，ＣＰＵタイマー（下位ビット）１０のカウント値が（０１２３４５）１６であったとする。タイマー読み出し命令に対して，更新要求フラグ１３が“０”のときには，マイクロプログラム作業レジスタ（Ａ）１５には，（０００００００００１２３４５００）１６のデータが載る。この値と，上位ビットのデータ（ＡＡＡＡＡＡＡＡ００００００００）１６が載っているマイクロプログラム作業レジスタ（Ｂ）１６の値とを，加算演算器１７により加算すると，マイクロプログラム作業レジスタ（Ｃ）１８に求めるタイマー値（ＡＡＡＡＡＡＡＡ０１２３４５００）１６が得られる。
【００２９】
図４は，本発明の実施例におけるタイマー更新要求ありのときの実行例を示す。ＣＰＵタイマー（上位ビット）１２およびＣＰＵタイマー（下位ビット）１０の値は，図３の例と同じである。
【００３０】
更新要求フラグ１３が“１”の場合，タイマー読み出し命令に対して，マイクロプログラム作業レジスタ（Ａ）１５には，（ＦＦＦＦＦＦＦＦ０１２３４５００）１６のデータが載る。この値と，上位ビットのデータ（ＡＡＡＡＡＡＡＡ００００００００）１６が載っているマイクロプログラム作業レジスタ（Ｂ）１６の値とを，加算演算器１７により加算する。マイクロプログラム作業レジスタ（Ｃ）１８に出力される結果は，（ＡＡＡＡＡＡＡ９０１２３４５００）１６となる。この結果の上位３２ビットは，（ＡＡＡＡＡＡＡＡ）１６から１を引いた結果と同じであり，更新要求フラグ１３が“１”のとき，自動的に上位ビットの減算が行われることになる。
【００３１】
【発明の効果】
以上説明したように，本発明によれば，わずかなハードウェアの追加により，マイクロプログラムのダイナミックステップ数（実行ステップ数）を削減することが可能になる。また，タイマー更新要求時の実行ステップとタイマー読み出し命令の実行ステップの共通化が可能になる。
【図面の簡単な説明】
【図１】本発明の構成例を示す図である。
【図２】本発明の実施例によるマイクロプログラムの処理フローチャートである。
【図３】本発明の実施例におけるタイマー更新要求なしのときの実行例を示す図である。
【図４】本発明の実施例におけるタイマー更新要求ありのときの実行例を示す図である。
【図５】従来のタイマーの例を示す図である。
【図６】従来技術の処理フローチャートである。
【符号の説明】
１０    ＣＰＵタイマー（下位ビット）
１１    マイクロプログラム作業領域
１２    ＣＰＵタイマー（上位ビット）
１３    更新要求フラグ
１４    データ拡張回路
１５    マイクロプログラム作業レジスタ（Ａ）
１６    マイクロプログラム作業レジスタ（Ｂ）
１７    加算演算器
１８    マイクロプログラム作業レジスタ（Ｃ）
【図１】
0003588368.tif 000002
【図２】
0003588368.tif 000003
【図３】
0003588368.tif 000004
【図４】
0003588368.tif 000005
【図５】
0003588368.tif 000006
【図６】
0003588368.tif 000007