(57)【特許請求の範囲】
【請求項１】
ｎ命令フィールド（ｎは２以上の整数）からなるＶＬＩＷを命令メモリから読み出して該ＶＬＩＷの並列演算処理を実行する情報処理装置において、
該ｎ命令フィールドの各々に対して、該命令メモリのメモリアドレスを保持する命令ポインタと、
１つの命令ストリームの該並列演算処理対象の命令に対応する該命令ポインタの数を変更し、該命令の並列演算処理数をｎからｉ（ｉはｎ＞ｉ≧１となる整数）に変更する手段と
を備えていることを特徴とする情報処理装置。
【請求項２】
ｎ個の命令（ｎは２以上の整数）を命令メモリから読み出して並列演算処理を実行する情報処理装置において、
該ｎ個の命令の各々に対して、該命令メモリのメモリアドレスを保持する命令ポインタと、
１つの命令ストリームの該並列演算処理対象の命令に対応する該命令ポインタの数を変更し、該命令の並列演算処理数をｎからｉ（ｉはｎ＞ｉ≧１となる整数）に変更する手段と
を備えていることを特徴とする情報処理装置。
【請求項３】
ｎ個の命令（ｎは２以上の整数）を命令メモリから読み出して並列実行する情報処理装置において、
該ｎ個の命令の一部に対応する命令ポインタと、該ｎ個の命令の他の一部に対応する命令ポインタとを互いに独立して設け、
１つの命令ストリームの該並列演算処理対象の命令に対応する該命令ポインタの数を変更し、該命令の並列演算処理数をｎからｉ（ｉはｎ＞ｉ≧１となる整数）に変更する手段を更に有すること
を特徴とする情報処理装置。
【請求項４】
複数の命令レジスタと、
上記命令ポインタの内容に基づいて上記命令メモリから読み出された命令を該複数の命令レジスタに選択して供給する選択回路と、
を備えていることを特徴とする請求項１乃至３のいずれかに記載の情報処理装置。
【請求項５】
設定される並列実行状態に応じて、上記各命令ポインタに保持されているメモリアドレスの増分値を設定する状態／増分変換回路を備えていること
を特徴とする請求項１乃至４のいずれかに記載の情報処理装置。
【請求項６】
上記状態／増分変換回路は、状態移行命令又は外部からの命令ストリーム追加要求に応答して上記状態を設定すること
を特徴とする請求項１乃至５のいずれかに記載の情報処理装置。
【請求項７】
上記複数の命令ポインタの一部に対応する第１の命令ストリームと、
該複数の命令ポインタの他の一部に対応する第２の命令ストリームとをダイナミックに生成すること
を特徴とする請求項１乃至６のいずれかに記載の情報処理装置。
【請求項８】
複数の命令を命令メモリから読み出して並列演算処理を実行する情報処理装置において、
複数の命令の少なくとも一部を実行する第１の命令ストリームに対応する第１の命令ポインタと、
１つの命令ストリームの該並列演算処理対象の命令に対応する該第１の命令ポインタの数を少なくなるように変更し、該命令の並列演算処理数が少なくなるように変更する変更手段と、
該変更手段の変更処理により、該１つの命令ストリームに対応しなくなったポインタであって、他の複数の命令の少なくとも一部を実行する第２の命令ストリームに対応するとともに、該第１の命令ポインタとは独立した第２の命令ポインタと
を備えていることを特徴とする情報処理装置。
【請求項９】
上記第１の命令ストリームにおいては主処理が実行され、
上記第２の命令ストリームにおいては割込処理が実行されること
を特徴とする請求項７又は８記載の情報処理装置。
【請求項１０】
上記第１の命令ストリーム又は上記第２の命令ストリームの終了に基づいて、該第１の命令ストリームと該第２の命令ストリームとを併合させて命令ストリームを一つとすること
を特徴とする請求項７乃至９のいずれかに記載の情報処理装置。
【請求項１１】
上記第１の命令ストリーム又は上記第２の命令ストリームの終了は、命令ストリーム終了命令に基づくこと
を特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
ｎ命令フィールド（ｎは２以上の整数）からなるＶＬＩＷを命令メモリから読み出して該ＶＬＩＷの並列演算処理を実行する情報処理方法において、
該ｎ命令フィールドの各々に対して備えられた命令ポインタに保持される該命令メモリのメモリアドレスに基づいて該命令メモリからＶＬＩＷを読み出し、
１つの命令ストリームの該並列演算処理対象の命令に対応する該命令ポインタの数を変更し、該命令の並列演算処理数をｎからｉ（ｉはｎ＞ｉ≧１となる整数）に変更すること
を特徴とする情報処理方法。
【請求項１３】
ｎ個の命令（ｎは２以上の整数）を命令メモリから読み出して並列演算処理を実行する情報処理方法において、
該ｎ個の命令の各々に対して備えられた命令ポインタに保持される該命令メモリのメモリアドレスに基づいて該命令メモリからＶＬＩＷを読み出し、
１つの命令ストリームの該並列演算処理対象の命令に対応する該命令ポインタの数を変更し、該命令の並列演算処理数をｎからｉ（ｉはｎ＞ｉ≧１となる整数）に変更すること
を特徴とする情報処理方法。
【請求項１４】
ｎ個の命令（ｎは２以上の整数）を命令メモリから読み出して並列演算処理を実行する情報処理方法において、
該ｎ個の命令の一部に対応する命令ポインタと、該ｎ個の命令の他の一部に対応する命令ポインタとが互いに独立して設定され、
１つの命令ストリームの該並列演算処理対象の命令に対応する該命令ポインタの数を変更し、該命令の並列演算処理数をｎからｉ（ｉはｎ＞ｉ≧１となる整数）に変更すること
を特徴とする情報処理方法。
【請求項１５】
上記命令ポインタの内容に基づいて上記命令メモリから読み出された命令を該複数の命令レジスタに選択して供給する工程を更に備えていること
を特徴とする請求項１２乃至１４のいずれかに記載の情報処理方法。
【請求項１６】
上記命令ポインタに保持されているメモリアドレスを更新する工程を更に備えていること
を特徴とする請求項１２乃至５のいずれかに記載の情報処理方法。
【請求項１７】
状態移行命令又は外部からの命令ストリーム追加要求に応答して上記命令ポインタに保持されているメモリアドレスを更新すること
を特徴とする請求項１２乃至１６のいずれかに記載の情報処理方法。
【請求項１８】
上記複数の命令ポインタの一部に対応する第１の命令ストリームと、
該複数の命令ポインタの他の一部に対応する第２の命令ストリームとをダイナミックに生成すること
を特徴とする請求項１２乃至１７のいずれかに記載の情報処理方法。
【請求項１９】
複数の命令を命令メモリから読み出して並列演算処理を実行する情報処理方法において、
複数の命令の少なくとも一部を実行する、１つの命令ストリームである第１の命令ストリームの該並列演算処理対象の命令に対応する第１の命令ポインタの数を少なくなるように変更し、該命令の並列演算処理数を少なくなるように変更し、
該変更処理により、該第１の命令ストリームに対応しなくなったポインタであって、他の複数の命令の少なくとも一部を実行する第２の命令ストリームに、該第１のポインタとは独立した第２のポインタを対応させること
を特徴とする情報処理方法。
【請求項２０】
上記第１の命令ストリームにおいては主処理が実行され、
上記第２の命令ストリームにおいては割込処理が実行されること
を特徴とする請求項１８又は１９記載の情報処理方法。
【請求項２１】
上記第１の命令ストリーム又は上記第２の命令ストリームの終了に基づいて、該第１の命令ストリームと該第２の命令ストリームとを併合させて命令ストリームを一つとすること
を特徴とする請求項１８乃至２０のいずれかに記載の情報処理方法。
【請求項２２】
上記第１の命令ストリーム又は上記第２の命令ストリームの終了は、命令ストリーム終了命令に基づくこと
を特徴とする請求項２１に記載の情報処理方法。
【請求項２３】
単一プロセッサ内において、
第１の命令ポインタに基づいて命令メモリから読み出された第１の命令グループを実行して得られる第１の命令ストリームと、
第２の命令ポインタに基づいて命令メモリから読み出された第２の命令グループを実行して得られる第２の命令ストリームとを、
１つの命令ストリームである第１の命令ストリームに対応する該第１の命令ポインタの数を変更し、該第１の命令グループの並列演算処理数を変更するとともに、１つの命令ストリームである第２の命令ストリームに対応する該２の命令ポインタの数を変更し、該第２の命令グループの並列演算処理数を変更することを特徴とする情報処理方法。
【請求項２４】
ｎ命令フィールド（ｎは２以上の整数）からなるＶＬＩＷを命令メモリから読み出して該ＶＬＩＷの並列演算処理を実行する情報処理装置において、
該ｎ命令フィールドの各々に対して、該命令メモリのメモリアドレスを保持する命令ポインタと、
１つの命令ストリームの該並列演算処理対象の命令に対応する該命令ポインタの数を変更し、該命令の並列演算処理数をｎからｉ（ｉはｎ＞ｉ≧１となる整数）に変更するとともに、該命令が保持される命令レジスタの数、該命令がデコードされる命令デコーダの数、該命令に基づいた演算が行われる演算回路の数をｎからｉ（ｉはｎ＞ｉ≧１となる整数）に変更する手段と
を備えていることを特徴とする情報処理装置。
【請求項２５】
ｎ命令フィールド（ｎは２以上の整数）からなるＶＬＩＷを命令メモリから読み出して該ＶＬＩＷの並列演算処理を実行する情報処理方法において、
該ｎ命令フィールドの各々に対して備えられた命令ポインタに保持される該命令メモリのメモリアドレスに基づいて該命令メモリからＶＬＩＷを読み出し、
１つの命令ストリームの該並列演算処理対象の命令に対応する該命令ポインタの数を変更し、該命令の並列演算処理数をｎからｉ（ｉはｎ＞ｉ≧１となる整数）に変更するとともに、該命令が保持される命令レジスタの数、該命令がデコードされる命令デコーダの数、該命令に基づいた演算が行われる演算回路の数をｎからｉ（ｉはｎ＞ｉ≧１となる整数）に変更すること
を特徴とする情報処理装置方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ｎ個の命令（ｎは２以上の整数）を命令メモリから読み出して並列実行する情報処理装置及びその処理方法に関する。
【０００２】
【従来の技術】
ＶＬＩＷプロセッサでは、複数の演算ユニット及び制御ユニットを備え、複数命令フィールドからなる６４〜５１２ビットのＶＬＩＷを同時実行するので、高速処理が可能である。しかし、従来のＶＬＩＷプロセッサは命令ストリームが単一であるので、例えば入出力装置などのリソース制御を割り込み処理すると、必要な高速データ処理を一時的に中断しなければならず、高速化が妨げられる。そこで、従来では別個の複数のコントローラ系プロセッサを用いて、このようなリソース制御を行っていた。
【０００３】
【発明が解決しようとする課題】
しかし、複数のマイクロプロセッサを備えたマルチプロセッサシステムを構築し、マイクロプロセッサ間でコミニュケーションを取る必要があるので、コスト高になるとともに、制御が複雑になる。さらに、命令セットがＶＬＩＷプロセッサのそれと異なるリソース制御用プロセッサは、ＶＬＩＷプロセッサ用のオペレーティングシステムを利用することができないので、複数のＯＳを備える必要がある。この場合、例えば、マルチメディア系プロセッサに対応するＯＳが無かったり、また、コントローラ系プロセッサのＯＳとマルチメディア系プロッセサのＯＳとの親和性が乏しくて、相互動作の調整に多大な手間と時間が費やされたりするという問題が生ずる。
【０００４】
本発明の目的は、このような問題点に鑑み、単一の情報処理装置で複数の命令ストリームを並列実行することが可能な情報処理装置及びその処理方法を提供することにある。
【０００５】
【課題を解決するための手段及びその作用効果】
本発明の一態様では、ｎ命令フィールド（ｎは２以上の整数）からなるＶＬＩＷ又はｎ個の命令を命令メモリから読み出して並列演算処理を実行する情報処理装置において、
該ｎ命令フィールドの各々、該ｎ個の命令の各々、又は、該ｎ個の命令の一部及び他の一部に対して、該命令メモリのメモリアドレスを保持する命令ポインタと、
１つの命令ストリームの並列演算処理対象の命令に対応する該命令ポインタの数を変更し、該命令の並列演算処理数をｎからｉ（ｉはｎ＞ｉ≧１となる整数）に変更する手段とを備えている。
この情報処理装置によれば、１つの命令ストリームの並列演算処理数を状況に応じて変更することが可能となる。
本発明の他の態様では、上記構成にさらに、
複数の命令レジスタと、
上記命令ポインタの内容に基づいて上記命令メモリから読み出された命令を該複数の命令レジスタに選択して供給する選択回路
を備えている。
【０００６】
この情報処理装置によれば、該複数の命令レジスタの内容を並列実行することにより、複数の命令ストリームが並列実行される。また、該複数の命令レジスタの内容の組に応じて命令ストリーム数をダイナミックに変更することができるので、次のような効果を奏する。
（１）単一の情報処理装置で、主処理を高速に行うとともに入出力装置などのリソース制御も行うことができ、マルチプロセッサシステムを構築する必要がなくなり、システムのハードウェア及びソフトウェア構成が簡単化される。
【０００７】
（２）リソース制御においても単一の情報処理装置のオペレーティングシステムを利用することができるので、ソフトウェア構成が簡単化される。
（３）ハードウェア上の相互動作調整を行う必要がないので、システムの設計及び開発が容易になる。
（４）従来ではＶＬＩＷプロセッサで割込処理を行うと主処理を中断しなければならなかったが、本発明の情報処理装置によれば主処理を中断する必要がないので、安定したリアルタイム処理を行うことができる。
【０００８】
（５）ＶＬＩＷプロセッサでは、処理データが関連した命令群に対しＮＯＰ命令を追加してＶＬＩＷ数を増やす必要があり、このような場合に本発明のマルチ命令ストリームで他の処理を並列に行うことにより、処理効率が向上する。
以上のような効果を奏する本実施態様は、システムの安価化、小型化及び短納期化に寄与するところが大きい。
【０００９】
本発明の他の態様では、上記構成にさらに、設定される並列実行状態に応じて、上記各命令ポインタに保持されているメモリアドレスの増分値を設定する状態／増分変換回路を備えている。
この情報処理装置によれば、従来のサブルーチン実行又は他のプロセッサ起動に類似して、実行中に新たな命令ストリームを容易に追加することが可能となる。
【００１０】
本発明の他の態様では、上記状態／増分変換回路は、状態移行命令又は外部からの命令ストリーム追加要求に応答して上記状態を設定する。
この情報処理装置によれば、従来の割込処理又は他のプロセッサ起動に類似して、新たな命令ストリームを容易に追加することができる。
【００１１】
本発明の他の態様では、複数の命令を命令メモリから読み出して並列実行する情報処理装置において、
複数の命令の少なくとも一部を実行する第１の命令ストリームに対応する第１の命令ポインタと、
他の複数の命令の少なくとも一部を実行する第２の命令ストリームに対応するとともに、該第１の命令ポインタとは独立した第２の命令ポインタと、
を備えている。
この情報処理装置によっても、単一の情報処理装置で複数の命令ストリームを並列実行することが可能となる。
本発明の他の態様では、上記構成において、上記第１の命令ストリームにおいては主処理が実行され、
上記第２の命令ストリームにおいては割込処理が実行される。
従来ではＶＬＩＷプロセッサで割込処理を行うと主処理を中断しなければならなかったが、この情報処理装置によれば主処理を中断する必要がないので、安定したリアルタイム処理を行うことができる。
【００１２】
本発明の他の態様では、上記構成において、上記第１の命令ストリーム又は上記第２の命令ストリームの終了に基づいて、該第１の命令ストリームと該第２の命令ストリームとを併合させて命令ストリームを一つとする。
【００１４】
この情報処理装置によれば、１つの命令ストリーム終了後に、残った命令ストリームをより高速処理することが可能となる。
本発明の他の態様では、上記構成において、上記第１の命令ストリーム又は上記第２の命令ストリームの終了は、命令ストリーム終了命令に基づく。
【００１５】
この情報処理装置によれば、命令ストリーム幅増加処理が簡単になる。
【００１６】
本発明の他の目的、構成及び効果は、以下の説明から明らかになる。
【００１７】
【発明の実施の形態】
以下、図面を参照して本発明の一実施形態を説明する。
図１は、単一装置で複数の命令ストリームを並列実行することが可能な情報処理装置としてのＶＬＩＷプロセッサの概略構成を示す。
高速処理のために、命令メモリ１０とデータメモリ１１とを備え、互いに独立なバスでアクセス可能となっている。命令メモリ１０及びデータメモリ１１は、例えばキャッシュメモリである。
【００１８】
命令メモリ１０が命令ポインタ処理部１２でアドレス指定されて命令メモリ１０の内容が読み出され、選択回路１３を介して命令レジスタ１４０〜１４３に供給され、選択回路１３から制御回路１５へ供給されるレディ信号ＲＤＹが活性化される。制御回路１５は、これに応答し命令レジスタ１４０〜１４３にラッチ信号ＬＣＨのパルスを供給して、命令レジスタ１４０〜１４３にＶＬＩＷを保持させる。命令レジスタ１４０〜１４３の内容はそれぞれ命令デコーダ１６０〜１６３でデコードされ、その結果に基づいてそれぞれ演算回路１７０〜１７３が制御され、命令レジスタ１４０〜１４３のオペランドのアドレス情報が命令デコーダ１６０〜１６３を介し制御回路１５に供給される。制御回路１５は、演算回路１７０〜１７３の各々に対応した制御ユニットを備えており、オペランドの実アドレス計算が必要な場合には演算回路１７０〜１７３にその計算をさせ、そのアドレスをデータメモリ１１に供給する。演算回路１７０〜１７３は、データメモリ１１とデータバスで接続されており、データメモリ１１との間で演算対象及び演算結果のデータ授受を行う。
【００１９】
このような処理が、パイプラインで行われる。
命令レジスタ１４０〜１４３に保持された内容をそれぞれ＃０〜＃３と表す。従来では４並列シングル命令ストリームであったので、＃０〜＃３のデータの流れは図２（Ａ）に示すようなものに限定されていた。
これに対し、本実施形態では、この４並列シングル命令ストリームに加え、図２（Ｂ）に示すような１：３マルチ命令ストリーム、図２（Ｃ）に示すような２：２マルチ命令ストリーム、図２（Ｄ）に示すような１：１：２マルチ命令ストリーム及び図２（Ｅ）に示すような１：１：１：１マルチ命令ストリームを実行可能であり、しかも並列状態をダイナミックに切換可能になっている。図２（Ａ）〜（Ｅ）の並列状態をそれぞれ状態０〜４と称す。
【００２０】
図３は、このような状態がダイナミックに切り換えられているマルチ命令ストリームを示している。処理の流れは、図示矢印方向である。図３では１つの主命令ストリームと第１〜第３副命令ストリームとを示している。線幅は並列数を表しており、線幅が広いほど高速処理が可能である。
第１〜第３副命令ストリームは、従来の割込処理やサブルーチン等の分岐処理に類似しているが、１つの命令ストリームで割り込み処理に分岐するのではなく、新たな命令ストリームが増えるので実行中の命令ストリームは実行を継続でき、したがって割込処理で行われる退避処理や復帰処理を行う必要がない。
【００２１】
図１に戻って、命令ストリーム数を可変にするために、命令ポインタ処理部１２は命令レジスタ１４０〜１４３に対応してそれぞれ命令ポインタ１２０〜１２３を備えている。命令ポインタ１２０〜１２３の内容は、いずれも図４（Ａ）に示す如く、上位ビットのメモリアドレスＭＡと、下位ビットのフィールドアドレスＦＡとからなる。本実施形態では、１ＶＬＩＷが４命令フィールドであるので、フィールドアドレスＦＡは２ビットである。
【００２２】
命令メモリ１０はメモリアドレスＭＡで指定され、各メモリアドレスＭＡのデータに、図４（Ｂ）に示す如くフィールドアドレスＦＡが例えば３２ビット毎に割り当てられる。メモリアドレスＭＡとフィールドアドレスＦＡとの組を（ＭＡ，ＦＡ）で表す。例えば１ＶＬＩＷが１２８ビットで、命令メモリ１０が３２ビットの命令メモリを４個備えている場合には、フィールドアドレスが物理的な命令メモリと対応するが、このような対応はなくてもよい。
【００２３】
分岐の無い通常のストリームにおいては、１ＶＬＩＷが命令レジスタ１４０〜１４３に保持される毎に、命令ポインタ１２０〜１２３の内容にそれぞれ増分レジスタ１８０〜１８３の出力値が加算される。分岐命令の場合には、従来同様に、命令デコーダ及び制御回路１５を介し対応する命令ポインタに分岐先アドレスが供給されて、命令ポインタの内容が更新される。
【００２４】
従来のサブルーチン実行又は他のプロセッサ起動に類似して、実行中に新たな命令ストリームを追加可能にするために、命令セットに状態移行命令を含んでいる。この状態移行命令は、新命令ストリーム先頭アドレス（ＭＡ，ＦＡ）を含んでいる。この命令が命令デコーダでデコードされると、一方では制御回路１５を介して、新命令ストリーム先頭アドレス（ＭＡ，ＦＡ）が命令ポインタ処理部１２に供給され、他方では制御回路１５及び状態更新回路１９を介して状態レジスタ２０の内容Ｓに、Ｓ＝１であれば２が加算され、Ｓ≠１であれば１が加算される。この場合、状態更新回路１９は単なる信号通過経路であってもよい。
【００２５】
命令ポインタ処理部１２は簡単化のため例えば、状態移行前の幅（並列数）が２以上の命令ストリームかつ図１の最も左側の命令ストリームの幅を、１だけ狭くし、これに新たな命令ストリームを割り当てる。より具体的には、命令ポインタ処理部１２は、状態移行前の状態ＳがＳ＝０、１、２又は３であればそれぞれ命令ポインタ１２３、１２２、１２３又は１２１に、制御回路１５からの新命令ストリーム先頭アドレス（ＭＡ，ＦＡ）を保持させる。
【００２６】
このようにすれば、状態移行処理が簡単になる。例外として、状態０から状態２への移行が可能なように状態移行命令を定めておく。この場合、例えば命令ポインタ１２２及び１２３に新命令ストリーム先頭アドレスを設定する。
状態移行命令で状態を指定しないのは、後述のハード的な命令ストリーム追加要求ＩＳＲＱにより、現在実行中の命令ストリーム状態をプログラム作成段階で知得することができないことと、構成を簡単化するためである。なお、割込マスクのようにハード的な命令ストリーム追加要求ＩＳＲＱを禁止し又はプログラムで状態レジスタ２０の内容Ｓを読んで命令ストリーム状態を確認して、状態移行命令で状態Ｓを指定するようにしてもよい。
【００２７】
状態／増分変換回路２１は、状態レジスタ２０の出力Ｓを増分レジスタ１８０〜１８３に対する次のような増分値ΔＰＣ０〜ΔＰＣ３に変換する。
Ｓ＝０：  ΔＰＣ３＝４、ΔＰＣ２＝４、ΔＰＣ１＝４、ΔＰＣ０＝４
Ｓ＝１：  ΔＰＣ３＝１、ΔＰＣ２＝３、ΔＰＣ１＝３、ΔＰＣ０＝３
Ｓ＝２：  ΔＰＣ３＝２、ΔＰＣ２＝２、ΔＰＣ１＝２、ΔＰＣ０＝２
Ｓ＝３：  ΔＰＣ３＝１、ΔＰＣ２＝１、ΔＰＣ１＝２、ΔＰＣ０＝２
Ｓ＝４：  ΔＰＣ３＝１、ΔＰＣ２＝１、ΔＰＣ１＝１、ΔＰＣ０＝１
上述の状態更新回路１９と状態レジスタ２０と状態／増分変換回路２１とで、増分更新回路２２が構成されている。
【００２８】
従来の割込処理又は他のプロセッサ起動に類似して、新たな命令ストリームをハード的に追加することができるようにするために、制御回路１５は外部からの命令ストリーム追加要求ＩＳＲＱに対し、Ｓ＜４であれば要求に応答して、予め定められたアドレス（ＭＡ，ＦＡ）を命令ポインタ処理部１２に供給し、状態更新回路１９を介し状態レジスタ２０の内容に、Ｓ＝１であれば２を加算し、Ｓ≠１であれば１を加算する。命令ポインタ処理部１２では、上記状態移行命令の場合と同様にして選択した命令ポインタに、アドレス（ＭＡ，ＦＡ）を保持させる。
【００２９】
命令ストリーム追加要求ＩＳＲＱは、従来の割込要求に類似しているが、命令ストリーム数が１つ増えるので実行中の命令ストリームは実行を継続でき、したがって割込処理で行われる退避処理や復帰処理を行う必要がなく、この点でも有利である。
図５は、状態０の４並列シングル命令ストリームから、状態移行命令又は命令ストリーム追加要求ＩＳＲＱにより、状態２の１：３マルチ命令ストリームへ移行する場合を示す。図５では、命令レジスタ１４３〜１４０の値＃３〜＃０の流れを、その値が格納されている命令メモリ１０内の対応するアドレス（ＭＡ，ＦＡ）の流れで示している。
【００３０】
最初、状態レジスタ２０の内容が０、増分ΔＰＣ３〜ΔＰＣ０がいずれも４になっている。
命令メモリ１０のアドレス０から命令が読み出され、選択回路１３によりアドレス（０，３）〜（０，０）の内容がそれぞれ命令レジスタ１４３〜１４０に保持される。この場合、アドレスが１つであるので、選択回路１３は単なる配線として機能する。
【００３１】
次に、命令メモリ１０のアドレス１から命令が読み出され、選択回路１３によりアドレス（１，３）〜（１，０）の内容がそれぞれ命令レジスタ１４３〜１４０に保持される。
状態移行命令又は命令ストリーム追加要求ＩＳＲＱに応答してＰＣ３＝（１００，０）となり、これと並行して命令ポインタ値ＰＣ２〜ＰＣ０がそれぞれ（２，２）〜（２，０）になる。状態レジスタ２０の内容が１に変化し、これにより増分ΔＰＣ３〜ＰＣ０がそれぞれ１、３、３及び３に変化する。命令メモリ１０のアドレス１００及び２から命令が読み出され、選択回路１３によりアドレス（１００，０）及び（２，２）〜（２，０）の内容がそれぞれ命令レジスタ１４３〜１４０に保持される。
【００３２】
ここで、命令メモリ１０がキャッシュメモリの場合には記憶容量が比較的少なく、かつ、プロセッサの集積度が益々向上しているので、同じ内容でバスが互いに独立な命令メモリを複数備えて複数アドレス指定を行うことにより、命令メモリからの１ＶＬＩＷ読出時間を短縮してもよい。また、選択回路１３にバッファレジスタと命令フィールド単位でシフト可能なシフトレジスタとを備え、命令メモリ１０から既に読み出されてバッファレジスタに保持されている内容を、このバッファレジスタから取り出すようにしてもよい。
【００３３】
増分ΔＰＣ３〜ＰＣ０の値がそれぞれ命令ポインタ値ＰＣ３〜ＰＣ０に加算されて、ＰＣ３〜ＰＣ０は次のよう変化する。
ＰＣ３：（１００，１）←（１００，０）＋１
ＰＣ２：（３，１）←（２，２）＋３
ＰＣ１：（３，０）←（２，１）＋３
ＰＣ０：（２，３）←（２，０）＋３
命令メモリ１０のアドレス１００、３及び２から命令が読み出され、選択回路１３によりアドレス（１００，１）、（３，１）、（３，０）及び（２，３）の内容がそれぞれ命令レジスタ１４３〜１４０に保持される。
【００３４】
命令ストリーム追加要求ＩＳＲＱの場合、この要求に応じて実行されるプログラム中で、割込原因フラグに類似の命令ストリーム追加要求原因を示す状態フラグを見て、要求原因、例えば要求元の入出力装置の種類が調べられ、原因に応じてサービスルーチンへジャンプする。なお、この処理中で、状態レジスタ２０の内容を調べ、例えば、Ｓ＝１であれば状態移行命令で状態２へ移行できるようにしてもよい。
【００３５】
図６は、状態０の４並列シングル命令ストリームから状態２の２：２マルチ命令ストリームへの移行を示す。
図７は、状態１の１：３マルチ命令ストリームから状態３の１：１：２マルチ命令ストリームへの移行を示す。
図８は、状態３の１：１：２マルチ命令ストリームから状態４の１：１：１：１マルチ命令ストリームへの移行を示す。
【００３６】
図７及び図８ではいずれも上述のように、状態移行前の幅が２以上の命令ストリームかつ図の最も左側の命令ストリームの幅を、１だけ狭くし、これに新たな命令ストリームを割り当てるという規則に従っている。
新規命令ストリームが以上のようにして追加された後、いずれかの命令ストリームが終了した場合には、並列数が４より小さくなるので、命令ストリーム幅を広げて並列数を４にすることにより、処理を高速化した方が好ましい。
【００３７】
そこで、命令セットに命令ストリーム終了命令を含んで、命令ストリーム数を変えずに命令ストリーム幅を広げることができるようにしている。この命令が命令デコーダでデコードされると、一方ではこれをデコードした命令デコーダの識別コードが制御回路１５を介して命令ポインタ処理部１２に供給され、他方では制御回路１５からの信号に応答して状態更新回路１９により、状態レジスタ２０の内容から、Ｓ＝２であれば２が減算され、Ｓ≠２であれば１が減算される。
【００３８】
どの命令ストリームを広げるかについては任意性があり、ＶＬＩＷプロセッサの設計において、例えば以下のいずれかの規則を選択しておく。
（１）主命令ストリーム幅を広げるために、例えば図１の最も右側の命令ストリームの幅を広げる。
（２）最も規則を簡単にするために、終了した命令ストリームの隣側、例えば図１の右側（右側に無ければ左側）の命令ストリームの幅を広げる。
【００３９】
（３）命令ストリーム終了命令に、どの命令ストリームの幅を広げるかの情報を含ませておき、これに基づいて決定する。
（４）主命令ストリームを示すレジスタを備えておき、プログラムで予めこのレジスタの内容を設定しておき、その内容を見て主命令ストリームを確認し、その幅を広げる。
【００４０】
命令ポインタ処理部１２は、制御回路１５からの上記識別コード及び選択された上記規則に基づいて、所定の命令ストリームの幅が広がるように命令ポインタ１２０〜１２３の内容を変更する。この変更には、以下に示すように命令ストリームの移動を伴う場合がある。また、ストリーム幅拡大のタイミングは、拡大後に１ＶＬＩＷに対応した命令メモリ指定アドレス数をできるだけ少なくするために、状態更新回路１９により以下のようにして決定される。
【００４１】
図９及び図１０は、上記規則（１）又は（２）の場合を示し、図１１は規則（２）の場合を示し、図１２は規則（１）の場合を示している。図９〜図１２はいずれも、規則（３）又は（４）の一例を示していると言うこともできる。
図９は、状態１の１：３マルチ命令ストリームから、状態０の４並列シングル命令ストリームへの移行を示す。
【００４２】
図９中の＃３の列の（１６０、１）は、命令ストリーム終了命令のアドレスである。この命令が命令デコーダ１６３でデコードされると、制御回路１５は、一方では命令ポインタ処理部１２へ命令デコーダ１６３の識別コードを供給し、他方では、状態更新回路１９にストリーム幅拡大指令を供給する。次の１ＶＬＩＷで状態Ｓを変更すると、命令メモリ１０に対し指定すべきアドレスの数が２になるので、これを１にするために、状態更新回路１９は、一方では制御回路１５を介して、命令ポインタ１２０のフィールドアドレスＦＡが０になるまで、命令レジスタ１４３の内容をＮＯＰ命令（ノーオペレーション命令）にし又は命令デコーダ１６３及び演算回路１７３を停止状態にさせ、他方では状態レジスタ２０の更新を禁止しかつ命令ポインタ処理部１２に対し命令ポインタ１２３の更新を禁止させる。
【００４３】
命令ポインタ１２０のフィールドアドレスＦＡが０になると、この禁止が解除されて、命令ポインタ処理部１２により命令ポインタ１２２の内容が命令ポインタ１２３に複写され命令ポインタ１２３の内容に１が加算されて、ＰＣ３＝（２３，３）となり、これと並行して命令ポインタ値ＰＣ２〜ＰＣ０がそれぞれ（２３，２）〜（２３，０）になる。状態レジスタ２０の内容Ｓが１から０に更新され、これにより増分ΔＰＣ３〜ＰＣ０がいずれも４に変化する。命令メモリ１０のアドレス２３から命令が読み出され、選択回路１３を介し命令レジスタ１４３〜１４０に保持される。増分ΔＰＣ３〜ＰＣ０の値がそれぞれ命令ポインタ値ＰＣ３〜ＰＣ０に加算されてＰＣ３〜ＰＣ０が（２４，３）〜（２４，０）になる。
【００４４】
図１０は、状態２の２：２マルチ命令ストリームから状態０の４並列シングル命令ストリームへの移行を示す。＃３の列の（１６０，１）は、命令ストリーム終了命令のアドレスである。なお、（１６０，０）が命令ストリーム終了命令のアドレスで（１６０，１）が無意味の命令のアドレスであってもよい。
図１１は、状態３の１：１：２マルチ命令ストリームから状態２の２：２マルチ命令ストリームへの移行を示す。
【００４５】
＃３の列の（２６０，３）は、命令ストリーム終了命令のアドレスである。この次に＃２の命令ストリーム幅が拡大すると、その次に、
（１６１，０）（１６０，３）となって指定すべきメモリアドレスが２つになる。そこで、幅を拡大すべき命令ストリームの最も右側に対応した命令ポインタ１２２のフィールドアドレスＦＡがいずれ０になるように、すなわちこのフィールドアドレスＦＡが２又は０になるまで、上記同様に状態レジスタ２０及び命令ポインタ１２２の更新を禁止する。構成の簡単化のために、前記”２又は０”を”０”としても大差はない。
【００４６】
図１２は、状態４の１：１：１：１マルチ命令ストリームから状態３の１：１：２マルチ命令ストリームへの移行を示す。
＃３の列の（３５０、３）は、命令ストリーム終了命令のアドレスである。上記同様に、幅を拡大すべき命令ストリームの最も右側に対応した命令ポインタ１２０のフィールドアドレスＦＡが０になるまで状態レジスタ２０及び命令ポインタ１２１の更新を禁止する。また、＃０の命令ストリーム幅を拡大するために命令ポインタ１２１を更新すると、すなわち命令ポインタ１２０の内容を命令ポインタ１２１に複写して命令ポインタ１２１の内容に１に加算すると、元の＃１の命令ストリームが消失するので、命令ポインタ１２１の内容を、終了命令ストリームに対応した命令ポインタ１２３に移した後、この変更を行う。なお、命令ポインタ１２１及び１２２の内容をそれぞれ命令ポインタ１２２及び１２３にシフトさせた後にこの更新を行ってもよい。
【００４７】
本実施形態によれば、命令ストリーム数をダイナミックに変更することができるので、次のような効果を奏する。
（１）単一プロッセサで、主処理を高速に行うとともに入出力装置などのリソース制御も行うことができ、マルチプロセッサシステムを構築する必要がなくなり、システムのハードウェア及びソフトウェア構成が簡単化される。
【００４８】
（２）リソース制御においてもＶＬＩＷプロセッサ用のオペレーティングシステムを利用することができるので、ソフトウェア構成が簡単化される。
（３）ハードウェア上の相互動作調整を行う必要がないので、システムの設計及び開発が容易になる。
（４）従来ではＶＬＩＷプロセッサで割込処理を行うと主処理を中断しなければならなかったが、本実施形態のＶＬＩＷプロセッサによれば主処理を中断する必要がないので、安定したリアルタイム処理を行うことができる。
【００４９】
（５）ＶＬＩＷプロセッサでは、例えば、
ＡＤＤ  Ａ，Ｂ    ＳＵＢ  Ａ，Ｃ    ＭＵＬＴ  Ａ，Ｄ  ＩＮＣ  Ａ
のように処理結果を次のステップで使用する場合には１ＶＬＩＷで処理することができず、この場合、プログラマ又はコンパイラによりＮＯＰ命令を追加して次のような４ＶＬＩＷにする必要がある。
【００５０】
ＡＤＤ  Ａ，Ｂ    ＮＯＰ    ＮＯＰ    ＮＯＰ
ＳＵＢ  Ａ，Ｃ    ＮＯＰ    ＮＯＰ    ＮＯＰ
ＭＵＬＴ  Ａ，Ｄ  ＮＯＰ    ＮＯＰ    ＮＯＰ
ＩＮＣ  Ａ        ＮＯＰ    ＮＯＰ    ＮＯＰ
このような無駄が比較的多いプログラムでは、本実施形態のようにマルチ命令ストリームにして他の処理を並列に行うことにより、処理効率が向上する。
【００５１】
以上のような効果を奏する本実施形態は、システムの安価化、小型化及び短納期化に寄与するところが大きい。
【図面の簡単な説明】
【図１】本発明の一実施形態のＶＬＩＷプロセッサを示す概略ブロック図である。
【図２】（Ａ）〜（Ｄ）はそれぞれ状態０〜４の命令ストリームを示す説明図である。
【図３】マルチ命令ストリーム数の変化を示す図である。
【図４】（Ａ）は命令ポインタのフォーマットを示す図であり、（Ｂ）は命令メモリ内のメモリアドレスとフィールドアドレスとの関係を示す図である。
【図５】状態０の４並列シングル命令ストリームから状態１の１：３マルチ命令ストリームへの移行を示す説明図である。
【図６】状態０の４並列シングル命令ストリームから状態２の２：２マルチ命令ストリームへの移行を示す説明図である。
【図７】状態１の１：３命令ストリームから状態３の１：１：２マルチ命令ストリームへの移行を示す説明図である。
【図８】状態３の１：１：２マルチ命令ストリームから状態４の１：１：１：１マルチ命令ストリームへの移行を示す説明図である。
【図９】状態１の１：３マルチ命令ストリームから状態０の４並列シングル命令ストリームへの移行を示す説明図である。
【図１０】状態２の２：２マルチ命令ストリームから状態０の４並列シングル命令ストリームへの移行を示す説明図である。
【図１１】状態３の１：１：２マルチ命令ストリームから状態２の２：２マルチ命令ストリームへの移行を示す説明図である。
【図１２】状態４の１：１：１：１マルチ命令ストリームから状態３の１：１：２マルチ命令ストリームへの移行を示す説明図である。
【符号の説明】
１０  命令メモリ
１１  データメモリ
１２  命令ポインタ処理部
１２０〜１２３  命令ポインタ
１３  選択回路
１４０〜１４３  命令レジスタ
１５  制御回路
１６０〜１６３  命令デコーダ
１７０〜１７３  演算回路
１８０〜１８３  増分レジスタ
１９  状態更新回路
２０  状態レジスタ
２１  状態／増分変換回路
２２  増分更新回路
ＩＳＲＱ  命令ストリーム追加要求
ＲＤＹ  レディ信号
ＬＣＨ  ラッチ信号
ΔＰＣ０〜ΔＰＣ３  増分
ＰＣ０〜ＰＣ３  命令ポインタ値
Ｓ  状態
【図１】
0003601758.tif 000002
【図２】
0003601758.tif 000003
【図３】
0003601758.tif 000004
【図４】
0003601758.tif 000005
【図５】
0003601758.tif 000006
【図６】
0003601758.tif 000007
【図７】
0003601758.tif 000008
【図８】
0003601758.tif 000009
【図９】
0003601758.tif 000010
【図１０】
0003601758.tif 000011
【図１１】
0003601758.tif 000012
【図１２】
0003601758.tif 000013