(57)【特許請求の範囲】
【請求項１】
中央処理装置から出力された仮想アドレスに基づき、中間コードを解釈して物理アドレスに変換するための装置であって、
上記中間コードの命令を格納する格納手段と、
上記中間コードの命令処理が格納されたページの物理アドレスを記憶する記憶手段と、
この記憶手段から取り出されたアドレスと、上記中央処理装置から出力された仮想アドレスとを組み合わせて物理アドレスに変換する変換手段とを含むことを特徴とする動的中間コード処理装置。
【請求項２】
請求項１に記載の動的中間コード処理装置において、
上記記憶手段は、使用頻度の高い上記中間コードの命令処理が格納されたページの物理アドレスを記憶し、
上記変換手段は、上記記憶手段において上記格納手段に格納された命令が存在する場合に、上記記憶手段から取り出されたアドレスと、上記中央処理装置から出力された仮想アドレスとを組み合わせて物理アドレスに変換し、
上記記憶手段にエントリを持たない命令の場合に、上記中央処理装置から出力されたアドレスを直接出力する出力手段を含むことを特徴とする動的中間コード処理装置。
【請求項３】
請求項１に記載の動的中間コード処理装置において、
上記記憶手段は、使用頻度の高い上記中間コードの命令処理が格納されたページの物理アドレスを記憶しており、かつ、当該記憶手段において存在しないオペレーションコードを処理するための命令解釈部が格納されたページの物理アドレスを備えていることを特徴とする動的中間コード処理装置。
【請求項４】
請求項１ないし３のいずれかに記載の動的中間コード処理装置において、
上記記憶手段は、上記格納手段に格納されているオペレーションコードに対応して、上記中間コードの命令処理が格納されたページのサイズを記憶するページサイズエントリを備え、
このページサイズエントリの値を元に、上記中央処理装置から出力された仮想アドレスと、上記記憶手段から取り出されたアドレスとの間で出力するアドレスを変換するために、両アドレスのいずれか一方のビットを選択する選択手段を含むことを特徴とする動的中間コード処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、中間コードで記述されたプログラムを実行する装置に関し、特に、中間コードの命令を実行する際に、命令の解釈と分岐処理とを高速処理できる装置にかかる。
【０００２】
【従来の技術】
従来の動的中間コード処理装置では、中間コードで記述されたプログラムを実行する場合、命令の解釈は、ソフトウェアで逐次命令コードを比較することで、各々の命令の処理に分岐して処理が行われていた。
【０００３】
ここに、中間コードとは、コンパイラでソース・プログラムをオブジェクト・プログラムに変換する際に作られる仮想的な機械語をいう。
【０００４】
図９は従来の中間コードで記述されたプログラムの処理を行う装置の構成を示すブロック図である。
【０００５】
同図において、１００は中央処理装置（以下、「ＣＰＵ：Center Processing Unit」という。）、２００はメモリである。中間コードの実行プログラムは、ＣＰＵ１００から出力されたアドレスに従ってメモリ２００から読み出され、ＣＰＵ１００において、命令コードの解釈と処理部との実行が行われていた。
【０００６】
また、マイクロプログラマブル・データ処理装置において、任意の仮想計算機の命令語を高速にデコードし、実行できるように、特開昭６２−９８４２７号公報にて「連想型マイクロ制御方式」が提案されている。
【０００７】
かかる公開公報にて開示さている「連想型マイクロ制御方式」は、命令をレジスタにセットしてマイクロコードの先頭アドレスに分岐させることで、命令の実行を高速化する方式である。
【０００８】
【発明が解決しようとする課題】
図９に示した従来の中間コードで記述されたプログラムの処理を行う装置では、以下の問題点が指摘されている。
【０００９】
すなわち、命令を逐次比較して解釈するため、毎回命令を実行するたびに、比較処理が行われるので、効率的な処理が行えない。
【００１０】
加えて、命令の解釈と処理部への条件分岐とが連続するため、ＣＰＵ内のパイプライン処理の中断が頻繁に発生するので、効率的な処理が行えない。
【００１１】
また、特開昭６２−９８４２７号公報にて提案されている「連想型マイクロ制御方式」では、以下の問題点が指摘されている。
【００１２】
すなわち、連想メモリから得られたアドレスを変換するのではなく、そのまま利用して分岐するため、同様に、ＣＰＵ内のパイプライン処理の中断が発生する。
【００１３】
本発明は、上記技術的課題に鑑みなされたもので、中間コードの命令の解釈と処理部への分岐とを高速に行うことができるとともに、ＣＰＵのパイプライン処理を妨げることなく、高速処理化を達成することができる動的中間コード処理装置を提供することを目的とする。
【００１４】
【課題を解決するための手段】
上記目的を達成するために、請求項１に記載の発明にかかる動的中間コード処理装置は、中央処理装置から出力された仮想アドレスに基づき、中間コードを解釈して物理アドレスに変換するための装置であって、上記中間コードの命令を格納する格納手段と、上記中間コードの命令処理が格納されたページの物理アドレスを記憶する記憶手段と、この記憶手段から取り出されたアドレスと、上記中央処理装置から出力された仮想アドレスとを組み合わせて物理アドレスに変換する変換手段とを含むことを特徴とするものである。
【００１５】
請求項２に記載の発明にかかる動的中間コード処理装置は、請求項１に記載の動的中間コード処理装置において、上記記憶手段は、使用頻度の高い上記中間コードの命令処理が格納されたページの物理アドレスを記憶し、上記変換手段は、上記記憶手段において上記格納手段に格納された命令が存在する場合に、上記記憶手段から取り出されたアドレスと、上記中央処理装置から出力された仮想アドレスとを組み合わせて物理アドレスに変換し、上記記憶手段にエントリを持たない命令の場合に、上記中央処理装置から出力されたアドレスを直接出力する出力手段を含むことを特徴とするものである。
【００１６】
請求項３に記載の発明にかかる動的中間コード処理装置は、請求項１に記載の動的中間コード処理装置において、上記記憶手段は、使用頻度の高い上記中間コードの命令処理が格納されたページの物理アドレスを記憶しており、かつ、当該記憶手段において存在しないオペレーションコードを処理するための命令解釈部が格納されたページの物理アドレスを備えていることを特徴とするものである。
【００１７】
請求項４に記載の発明にかかる動的中間コード処理装置は、請求項１ないし３のいずれかに記載の動的中間コード処理装置において、上記記憶手段は、上記格納手段に格納されているオペレーションコードに対応して、上記中間コードの命令処理が格納されたページのサイズを記憶するページサイズエントリを備え、このページサイズエントリの値を元に、上記中央処理装置から出力された仮想アドレスと、上記記憶手段から取り出されたアドレスとの間で出力するアドレスを変換するために、両アドレスのいずれか一方のビットを選択する選択手段を含むことを特徴とするものである。
【００１８】
【発明の実施の形態】
以下、本発明の実施の形態を添付図面に基づき詳細に説明する。
【００１９】
実施の形態１．
図１は本発明の実施の形態１にかかる動的中間コード処理装置の構成を示すブロック図である。
【００２０】
同図において、１はＣＰＵ、２はメモリ、３はオペレーションコードレジスタ、４は変換参照バッファ、５はアドレス変換部、６はメモリ管理部である。
【００２１】
変換参照バッファ４、およびアドレス変換部５は、メモリ管理部６に含まれている。
【００２２】
変換参照バッファ４は、命令コードの数に応じた数の複数のエントリを備えているものとする。例えば、命令コードの数が２５６の場合、２５６個のオペレーションコードと命令コードの処理部とが格納されたページの物理アドレスのエントリを持つ。
【００２３】
ここで、図１を参照して、本実施の形態１の動的中間コード処理装置の処理動作について説明する。
【００２４】
中間コードの処理プログラムは、予め、初期化処理として、変換参照バッファ４に、オペレーションコードと対応する物理アドレスの情報を書き込んでおく。
【００２５】
そして、中間コードを処理するプログラムは、命令の解釈を逐次比較して行うのではなく、ＣＰＵ１の外部に設けられたオペレーションコードレジスタ３に中間コードの命令コードを設定することで行われる。このとき、ＣＰＵ１は、命令コードの書き込みを行うとともに、この書き込みに併せて、アドレス線に仮想アドレスを出力する。
【００２６】
メモリ管理部６では、オペレーションコードレジスタ３に設定された命令コードから変換参照バッファ４に格納されている物理アドレスが取り出され、アドレス変換部５において、ＣＰＵ１から出力された仮想アドレスの下位ビット（ページのオフセット部）と、変換参照バッファ４から得られた物理アドレスとから命令の処理部が格納された物理アドレスを生成する。
【００２７】
図２はアドレス変換部で行われるアドレスの生成方法を示す図である。
【００２８】
同図において、１１はＣＰＵ１から出力された仮想アドレス（以下、「ＣＰＵ出力アドレス」という。）、１２はオペレーションコードレジスタ３に設定された命令コードから取り出された物理アドレス（以下、「変換参照バッファ出力アドレス」という。）、１３は生成アドレスである。
【００２９】
ここで、図２を参照して、アドレス変換部５で行われるアドレスの生成方法について説明する。
【００３０】
なお、図２では、ＣＰＵ１から出力される論理アドレスを３２ビット、アドレス変換部５で生成された物理アドレスを３２ビット、命令コードの処理が格納されるページのサイズを４Ｋバイトと想定しており、下位１２ビットがページのオフセットを示している。
【００３１】
アドレス変換部５では、ＣＰＵ出力アドレス１１の下位１２ビットをそのまま取り出し、この取り出したＣＰＵ出力アドレス１１の下位１２ビットと、変換参照バッファ出力アドレス１２から取り出された上位２０ビットとを組み合わせることで、生成アドレス１３、すなわち命令コードの処理部が格納された物理アドレスが得られる。
【００３２】
このように、本実施の形態１では、命令コードの処理部が格納された物理アドレスが自動的に生成されるため、ソフトウェア（プログラム）の分岐が発生しない。これにより、以下の効果を奏する。
【００３３】
すなわち、中間コードの命令をオペレーションコードレジスタ３に設定するだけで、変換参照バッファ４から中間コードの命令の解釈と処理部への分岐とを高速に行うことが可能となる。
【００３４】
また、仮想アドレスと物理アドレスとをマッピングするだけで、ＣＰＵ１からアクセスするアドレスが一定となり、ＣＰＵ１のパイプライン処理を妨げないで済む。そのため、動的中間コードの高速処理化を達成することができる。
【００３５】
上記の事項は、図３を参照することにより、より明瞭に理解することができる。
【００３６】
図３は本実施の形態１の処理方式と従来の処理方式方式とにおける中間コードの命令解釈、および処理の時間の流れの比較を簡略化して示した図である。
【００３７】
同図において、１５は命令の解釈に要する時間、１６は対応する命令の処理時間、１７はオペレーションコードレジスタ３に命令のセットに要する時間である。
【００３８】
図３から明らかな通り、従来の処理方式では、命令の解釈、および処理部への分岐に時間を要するが、本実施の形態１によれば、命令コードの解釈には、命令をオペレーションコードレジスタ３に設定する時間のみでよく、その結果、全体の処理時間を短縮することが可能となるのである。
【００３９】
実施の形態２．
実施の形態２は、実施の形態１では、変換参照バッファ４に、中間コードの全ての命令コードのエントリを備えているものであるのに対し、利用される頻度の高い命令コードと命令コードの処理部とが格納されたページの物理アドレスのみを変換参照バッファ４に格納して、それ以外の頻度の低い命令は従来方式の処理を併用することにより、変換参照バッファ４の省メモリ化と中間コードの処理の効率化とを実現するものである。
【００４０】
図４は本発明の実施の形態２にかかる動的中間コード処理装置の構成を示すブロック図である。
【００４１】
同図を参照して、本実施の形態２の動的中間コード処理装置の特徴は、ＣＰＵ１から出力されるアドレスと、アドレス変換部５で生成されるアドレスとの出力を切り替えるセレクタ７が新たに追加されている点にあり、その他の構成は、実施の形態１とほぼ同様である。
【００４２】
ここで、図４を参照して、セレクタの動作を説明する。
【００４３】
セレクタ７は、中間コードを処理するプログラムがオペレーションコードレジスタ３に命令コードを設定した際、変換参照バッファ４に命令コードが存在する場合には、アドレス変換部５で生成した物理アドレスを出力し、命令コードが変換参照バッファ４に存在しない場合には、従来方式の処理を行うべく、ＣＰＵ１から出力されたアドレスをそのまま出力するために、両者のアドレス出力の切り替えを行う。
【００４４】
なお、変換参照バッファ４に命令コードが存在する場合のアドレスの生成処理は、実施の形態１で同様であるので、その説明を省略する。
【００４５】
このように、本実施の形態２では、セレクタ７は、ＣＰＵ１からのアドレスをそのまま出力する系と、変換参照バッファ４を利用して変換したアドレスを出力する系との２種類の系の切り替えを行うので、従来通り、逐次命令コードを解釈して命令処理へ分岐させる方法と、変換参照バッファ４を利用して高速に命令処理を行う方法とを、命令コードにより、動的に選択することができる。これにより、変換参照バッファ４に全ての命令の処理コードのアドレスを持たせることなく、中間コードの解釈と実行とを行うことが可能となる。
【００４６】
換言すると、頻繁に使用される命令コードと、それ以外の命令コードとに分け、変換参照バッファ４に使用頻度の高い命令の情報のみを持たせることができるので、変換参照バッファ４を構成するメモリ量を削減することができる。このとき、変換参照バッファ４にない命令コードの処理は高速化されないものの、高価なメモリの削減が可能となる。つまり、使用頻度の高い命令の高速処理化を達成しつつ、従来の方式に比べて、処理の効率化、およびメモリの削減を実現できるものである。
【００４７】
実施の形態３．
図５は本発明の実施の形態３にかかる動的中間コード処理装置の構成を示すブロック図である。
【００４８】
同図を参照して、本実施の形態３の動的中間コード処理装置の特徴は、上述した実施の形態２では、変換参照バッファ４に命令コードが存在しない場合、ＣＰＵ１の出力アドレスを変換せずに、直接出力するセレクタ７を具備したものであるのに対し、変換参照バッファ４に命令コードが存在しない場合の変換用アドレスとして、中間コードの命令の解釈部の処理が記述されたページの物理アドレスをエントリに用意しておく点にあり、その他の構成は、実施の形態１とほぼ同様である。
【００４９】
このエントリは、オペレーションコードに書き込まれた命令コードが変換参照バッファ４内で存在しない場合に、内容が読み出される特別なエントリとして、変換参照バッファ４内に用意される。
【００５０】
ここで、図４を参照して、本実施の形態３の動的中間コード処理装置の処理動作について説明する。
【００５１】
中間コード処理プログラムがオペレーションコードレジスタ３に命令コードを設定すると、アドレス生成を行う。このとき、命令コードが変換参照バッファ４に存在する場合のアドレス生成は、実施の形態１と同様であるので、その説明を省略する。一方、変換参照バッファ４に存在しなかった場合は、命令の解釈部の処理が記述されたページの物理アドレスが出力される。そのため、アドレス変換部５で、ＣＰＵ１の出力アドレスのページオフセット部と、変換参照バッファ４とから出力された物理アドレスから求めるアドレスを生成する。
【００５２】
このように、本実施の形態３では、変換参照バッファ４は、使用頻度の高い中間コードの命令処理が格納されたページの物理アドレスを記憶しており、かつ、変換参照バッファ４において存在しないオペレーションコードを処理するための命令解釈部が格納されたページの物理アドレスを備えているので、頻繁使用される命令コードと、それ以外の命令コードとに分け、変換参照バッファ４に使用頻度の高い命令の情報のみを持たせることができる。そのため、使用頻度の高い命令の高速処理化を達成しつつ、従来の方式に比べて、処理の効率化、およびメモリの削減を実現できる。
【００５３】
実施の形態４．
実施の形態１ないし３において、命令の処理部は、１ページに格納される必要があるため、ページサイズは、命令コードの処理部の最大サイズに合わせて決定する必要があった。
【００５４】
図６は、このときの主記憶のメモリマップを示す図である。
【００５５】
同図において、１８は１ページサイズ、１９は命令に対応した処理部のサイズ、２０はページ内の未使用領域である。
【００５６】
図６からわかるように、命令に対応した処理部のサイズがページサイズよりも小さい場合は、ページ内に未使用領域２０が多く発生し、その結果、メモリの使用効率が低下する。
【００５７】
そこで、実施の形態４は、命令の処理部を格納するページサイズを動的に割り当てることを可能とし、メモリの使用効率を高めようとするものである。
【００５８】
図７は本発明の実施の形態４にかかる動的中間コード処理装置の構成を示すブロック図、図８は実施の形態４におけるアドレスの生成方法を示す図である。
【００５９】
これらの図を参照して、本実施の形態４の特徴は、変換参照バッファ４の命令コードのエントリに、命令コードの処理部が格納されているページのサイズを記憶するエントリ（以下、「ページサイスエントリ」という。）が新たに追加されている点、および変換参照バッファ４から取り出されたページサイズを用いて、ＣＰＵ１から出力されるアドレスと、変換参照バッファ４から取り出された物理アドレスの各ビットとについて、いずれのアドレスを出力するかを選択するための複数のセレクタ７を具備する点にあり、その他の構成は、実施の形態１とほぼ同様である。
【００６０】
なお、図８において、１４は変換参照バッファ４内のオペレーションコードのページサイズである。
【００６１】
ここで、図７、および図８を参照して、命令の処理部が格納される最小のページサイズを２５６バイト、最大のページサイズを４Ｋバイトとした場合の処理動作について説明する。
【００６２】
中間コードを処理するプログラムは、ＣＰＵ１の外部に設けられたオペレーションコードレジスタ３に中間コードの命令コードを設定し、この設定に併せて、ＣＰＵ１からは、アドレス線に仮想アドレスが出力される。
【００６３】
メモリ管理部６では、オペレーションコードレジスタ３に設定された命令コードから変換参照バッファ４に格納されている物理アドレスとページサイズとが取り出される。
【００６４】
アドレス変換部５では、ページサイズに応じて、ページサイズの大きさを可変できる部分に対応するビットを用いて、アドレス生成の処理が行われる。このページのオフセットは、ページサイズが２５６バイトのときは下位の８ビットとなり、４Ｋバイトのときは下位の１２ビットとなる。
【００６５】
そこで、図８に示すように、アドレス変換部５は、ＣＰＵ出力アドレス１１の下位８ビットと、変換参照バッファ出力アドレス１２の上位２０ビットとをそのまま利用する。
【００６６】
次に、生成アドレス１３の８から１１ビット目は、命令コードが格納されている変換参照バッファ４内のオペレーションコードのページサイズ１４に含まれる処理のページサイスを各々のビットに対応するセレクタ７に通知して、ＣＰＵ出力アドレス１１の出力と、変換参照バッファ出力アドレス１２の出力との切り替えを行なわせる。例えば、ページサイズが１の場合は、ＣＰＵ出力アドレス１１の８ビット目が利用され、ページサイズが２の場合は、ＣＰＵ出力アドレス１１の８ビット目と９ビット目とが利用される。
【００６７】
以下、同様にして、ページサイズの値を元に、ＣＰＵ出力アドレス１１のアドレスの８から１１ビット目の出力の選択が行われる。
【００６８】
このようにして、アドレス変換部５は、ＣＰＵ１から出力された仮想アドレスと、変換参照バッファ４から得られた物理アドレスとを組み合わせて、命令の処理部が格納された物理アドレスを生成することが可能となる。
【００６９】
このように、本実施の形態４では、変換参照バッファ４の命令コードのエントリに、命令コードの処理部が格納されているページのサイズを記憶するページサイスエントリを新たに追加するとともに、変換参照バッファ４から取り出されたページサイズを用いて、ＣＰＵ１から出力されるアドレスと、変換参照バッファ４から取り出された物理アドレスの各ビットとについて、いずれのアドレスを出力するか選択するための複数のセレクタ７を具備しているので、ページサイズのエントリの値から格納されている処理コードのサイズを知ることができ、実行する命令ごとに、処理コードが格納されている正しい先頭アドレスを取り出すことが可能となる。すなわち、各命令コードごとに、このエントリの値でセレクタ７を制御して、選択するアドレスを切り替えることができる。そのため、アクセスするメモリ上のアドレスの位置を細分化して指定することが可能となる。
【００７０】
換言すると、変換参照バッファ４に、ページサイズエントリとセレクタ７とがない場合には、ページは固定となるのに対し、上記のように、変換参照バッファ４に命令の処理コードのページサイズを持たせることで、命令コードが変換参照バッファ４でヒットするとともに、セレクタ７がページサイズを読み出してＣＰＵ出力アドレス１１と変換参照バッファ出力アドレス１２との各ビットを選択し、例えば８から１２ビットの範囲でページサイズを可変させてアドレスを生成することができる。そのため、命令の処理部を格納するページサイズを動的に割り当てることが可能となる。その結果、メモリの使用効率を高めることができる。
【００７１】
なお、本発明は、上記各実施の形態に限定されるものではなく、本発明の請求の範囲内での種々の設計変更、および修正を加え得ることは勿論である。
【００７２】
【発明の効果】
以上の説明から明らかな通り、本発明によると、中間コードの命令を格納手段に格納することで、記憶手段から中間コードの命令の解釈と処理部への分岐とを高速に行うことが可能となる。
【００７３】
また、仮想アドレスと物理アドレスとをマッピングすることで、ＣＰＵからアクセスするアドレスが一定となり、ＣＰＵのパイプライン処理を妨げないため、高速処理化を達成することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１にかかる動的中間コード処理装置の構成を示すブロック図である。
【図２】アドレス変換部で行われるアドレスの生成方法を示す図である。
【図３】実施の形態１の処理方式と従来の処理方式とにおける中間コードの命令解釈、および処理の時間の流れの比較を簡略化して示した図である。
【図４】本発明の実施の形態２にかかる動的中間コード処理装置の構成を示すブロック図である。
【図５】本発明の実施の形態３にかかる動的中間コード処理装置の構成を示すブロック図である。
【図６】ページサイズ固定時の主記憶のメモリマップにおける１ページ内の使用状況を示す図である。
【図７】本発明の実施の形態４にかかる動的中間コード処理装置の構成を示すブロック図である。
【図８】実施の形態４におけるアドレスの生成方法を示す図である。
【図９】従来の中間コードで記述されたプログラムの処理を行う装置の構成を示すブロック図である。
【符号の説明】
１      ＣＰＵ
２      メモリ
３      オペレーションコードレジスタ
４      変換参照バッファ
５      アドレス変換部
６      メモリ管理部
７      セレクタ
１１    ＣＰＵ出力アドレス
１２    変換参照バッファ出力アドレス
１３    生成アドレス
１４    変換参照バッファ内のオペレーションコードのページサイズ
１５    命令の解釈に要する時間
１６    命令の処理時間
１７    命令のセットに要する時間
１８    １ページサイズ
１９    命令に対応した処理部のサイズ
２０    ページ内の未使用領域
１００  ＣＰＵ
２００  メモリ
【図１】
0003644614.tif 000002
【図２】
0003644614.tif 000003
【図３】
0003644614.tif 000004
【図４】
0003644614.tif 000005
【図５】
0003644614.tif 000006
【図６】
0003644614.tif 000007
【図７】
0003644614.tif 000008
【図８】
0003644614.tif 000009
【図９】
0003644614.tif 000010