(57)【特許請求の範囲】
【請求項１】
複数の処理ユニットを有するプロセッサ用の超長命令ワードパケット群に含まれる可変長命令群を圧縮及び解凍するためのシステムであって、各超長命令ワードパケットが各処理ユニット用の命令を含み、
前記複数の可変長命令パケット群を複数の記憶場所に記憶する手段と、各可変長命令パケットは前記処理ユニット群の中の１つに関係する圧縮命令を含んでいて、
前記記憶手段にアクセスして選択された可変長命令パケットを検索する手段と、
前記可変長命令パケットを前記圧縮命令に構文解析する手段と、
前記関係する各処理ユニット用の可変長命令を生成するために、前記圧縮命令の各々を解凍する手段と、
前記解凍手段で解凍された可変長命令を前記関係処理ユニットに向けて経路指定する手段とを備えたことを特徴とするシステム。
【請求項２】
前記圧縮命令が、トークンフィールドと、ソースレジスタフィールドと、宛先レジスタフィールドとを含み、
前記圧縮されていない命令を形成するために、前記トークンフィールドからオペレーションコードを生成する手段と、前記ソースレジスタフィールドからソースレジスタアドレスを生成する手段と、前記宛先レジスタフィールドから宛先レジスタアドレスを生成する手段と、前記オペレーションコードと前記ソースレジスタアドレスと前記宛先レジスタアドレスとを連結する手段とを含む非圧縮命令生成手段を備えたことを特徴とする上記請求項１に記載のシステム。
【請求項３】
トークンは異なる長さを有し、より長さの短いトークンが頻繁に発生する非圧縮命令に割り当てられることを特徴とする上記請求項２に記載のシステム。
【請求項４】
前記解凍手段は、前記可変長命令パケット内に圧縮命令がない関係処理ユニット用の解凍されたデフォルト命令を生成する手段を含むことを特徴とする上記請求項１に記載のシステム。
【請求項５】
前記デフォルト命令生成手段が、前記各処理ユニット用のデフォルト命令を選択的に変化させる手段を含むことを特徴とする上記請求項４に記載のシステム。
【請求項６】
前記可変長命令パケットがパケット終端インジケータを含み、前記アクセス／検索手段が当該パケット終端インジケータを検知する手段を含むことを特徴とする上記請求項１に記載のシステム。
【請求項７】
前記可変長命令パケットが命令パケットの長さを調整するためのパッド命令を有し、前記構文解析手段が前記可変長命令パケットから当該パッド命令を取り除く手段を含むことを特徴とする上記請求項１に記載のシステム。
【請求項８】
前記アクセス／検索手段が、命令パケットアドレスを生成するために前記可変長命令パケットの長さに基づいて開始アドレスをオフセットする手段と、前記命令パケットアドレスを記憶する手段とを含むことを特徴とする上記請求項１に記載のシステム。
【請求項９】
前記記憶手段が第１メモリー及び第２メモリーを含み、且つ、前記命令パケットアドレスが、前記第１メモリーにアクセスするための第１アドレスと、前記第２メモリーにアクセスするための第２アドレスとを含み、その結果、前記選択された命令パケットが前記第１メモリーからそして次に前記第２メモリーから読出されることを特徴とする上記請求項８に記載のシステム。
【請求項１０】
前記命令パケットの第１の部分が前記第２メモリーに記憶され、且つ前記命令パケットの第２の部分が前記第１メモリーに記憶され、その結果、前記命令パケットが前記第２メモリーの境界にオーバラップし、且つ、前記命令パケットを前記第２メモリーからそして次に前記第１メモリーから読出すアドレスジェネレータ手段を含むことを特徴とする上記請求項９に記載のシステム。
【請求項１１】
前記経路指定手段が、前記処理ユニットに取り付けられた複数のマルチプレクサと、前記マルチプレクサを選択的に使用可能にするための手段とを含み、その結果、前記命令が関係処理ユニットに経路指定されることを特徴とする上記請求項１に記載のシステム。
【請求項１２】
複数の処理ユニットを有するプロセッサ用の超長命令ワードパケット群に含まれる可変長命令群を圧縮及び解凍するための方法であって、各超長命令ワードパケットが各処理ユニット用の命令を含み、
前記複数の可変長命令パケット群を複数の記憶場所に記憶する手段と、各可変長命令パケットは前記処理ユニット群の中の１つに関係する圧縮命令を含んでいて、
前記処理ユニット群の１つに関係する圧縮命令を含んだ前記複数の可変長命令パケットを、複数の記憶場所に記憶する段階と、
前記記憶段階にアクセスして選択された可変長命令パケットを検索する段階と、
前記可変長命令パケットを前記圧縮命令に構文解析する段階と、
前記関係する各処理ユニット用の可変長命令を生成するために、前記圧縮命令の各々を解凍する段階と、
前記解凍段階で解凍された可変長命令を前記関係処理ユニットに向けて経路指定する段階とを含むことを特徴とする方法。
【請求項１３】
前記圧縮命令が、トークンフィールドと、ソースレジスタフィールドと、宛先レジスタフィールドとを含み、
前記圧縮されていない命令を形成するために、前記トークンフィールドからオペレーションコードを生成する段階と、前記ソースレジスタフィールドからソースレジスタアドレスを生成する段階と、前記宛先レジスタフィールドから宛先レジスタアドレスを生成する段階と、前記オペレーションコードと前記ソースレジスタアドレスと前記宛先レジスタアドレスとを連結する段階とを含む非圧縮命令生成段階を含むことを特徴とする上記請求項１２に記載の方法。
【請求項１４】
トークンは異なる長さを有し、より長さの短いトークンが頻繁に発生する非圧縮命令に割り当てられることを特徴とする上記請求項１３に記載の方法。
【請求項１５】
前記解凍段階は、前記可変長命令パケット内に圧縮命令がない関係処理ユニット用の解凍されたデフォルト命令を生成する段階を含むことを特徴とする上記請求項１２に記載の方法。
【請求項１６】
前記デフォルト命令生成段階が、前記各処理ユニット用のデフォルト命令を選択的に変化させる段階を含むことを特徴とする上記請求項１５に記載の方法。
【請求項１７】
前記可変長命令パケットがパケット終端インジケータを含み、前記アクセス／検索段階が当該パケット終端インジケータを検知する段階を含むことを特徴とする上記請求項１２に記載の方法。
【請求項１８】
前記可変長命令パケットが命令パケットの長さを調整するためのパッド命令を有し、前記構文解析段階が前記可変長命令パケットから当該パッド命令を取り除く段階を含むことを特徴とする上記請求項１２に記載の方法。
【請求項１９】
前記アクセス／検索段階が、命令パケットアドレスを生成するために前記可変長命令パケットの長さに基づいて開始アドレスをオフセットする段階と、前記命令パケットアドレスを記憶する段階とを含むことを特徴とする上記請求項１２に記載の方法。
【請求項２０】
前記記憶段階が第１メモリー及び第２メモリーを含み、且つ、前記命令パケットアドレスが、前記第１メモリーにアクセスするための第１アドレスと、前記第２メモリーにアクセスするための第２アドレスとを含み、その結果、前記選択された命令パケットが前記第１メモリーからそして次に前記第２メモリーから読出されることを特徴とする上記請求項１９に記載の方法。
【請求項２１】
前記命令パケットの第１の部分が前記第２メモリーに記憶され、且つ前記命令パケットの第２の部分が前記第１メモリーに記憶され、その結果、前記命令パケットが前記第２メモリーの境界にオーバラップし、且つ、前記命令パケットを前記第２メモリーからそして次に前記第１メモリーから読出すアドレス生成段階を含むことを特徴とする上記請求項２０に記載の方法。
【請求項２２】
前記経路指定段階が、前記処理ユニットに取り付けられた複数のマルチプレクサと、前記マルチプレクサを選択的に使用可能にするための段階とを含み、その結果、前記命令が関係処理ユニットに経路指定されることを特徴とする上記請求項１２に記載の方法。
【請求項２３】
複数の処理ユニットを有するプロセッサ用の超長命令ワードパケット群に含まれる可変長命令群を圧縮及び解凍するためのシステムであって、各超長命令ワードパケットが各処理ユニット用の命令を含み、
前記処理ユニット群のうち対応する各ユニット用の命令を含んだ超長命令ワードパケットを生成する手段と、
前記可変長命令パケット内の各命令に圧縮された命令コードを割り当てる手段と、前記コードは異なる長さであって、且つより長さの短い圧縮命令コードが頻繁に発生する命令に割り当てられ、
前記処理ユニット群のうち対応するユニット用の圧縮命令を有する命令パケットを生成するために、各命令用の圧縮命令コードを連結する手段とを含むことを特徴とするシステム。
【請求項２４】
前記命令が、オペレーションコードと、ソースレジスタアドレスと、宛先レジスタアドレスとを含み、前記割り当て手段が、前記オペレーションコードからトークンフィールドを生成する手段と、前記ソースレジスタアドレスからソースレジスタフィールドを生成する手段と、前記宛先レジスタアドレスから宛先レジスタフィールドを生成する手段と、前記トークンフィールドと前記ソースレジスタフィールドと前記宛先レジスタフィールドとを前記圧縮命令に連結する手段とを更に含むことを特徴とする上記請求項２３に記載のシステム。
【請求項２５】
前記連結手段が、パケット終端インジケータを前記命令パケット内の最後の圧縮命令に付加する手段を含むことを特徴とする上記請求項２４に記載のシステム。
【請求項２６】
前記割当手段は、長さゼロの圧縮命令をデフォルトのオペレーションに割り当てることによって前記超長命令ワードパケットからデフォルトの命令を取り除く手段を含むことを特徴とする上記請求項２３に記載のシステム。
【請求項２７】
複数のパッドビットを前記圧縮命令パケット内に挿入する圧縮命令生成手段をさらに含み、その結果、前記圧縮命令パケットが命令メモリー内で正しく整列されることを特徴とする上記請求項２３に記載のシステム。
【請求項２８】
複数の処理ユニットを有するプロセッサ用の超長命令ワードパケット群に含まれる可変長命令群を圧縮及び解凍するための方法であって、各超長命令ワードパケットが各処理ユニット用の命令を含み、
前記処理ユニット群のうち対応する各ユニット用の命令を含んだ超長命令ワードパケットを生成する段階と、
前記可変長命令パケット内の各命令に圧縮された命令コードを割り当てる段階と、前記コードは異なる長さであって、且つより長さの短い圧縮命令コードが頻繁に発生する命令に割り当てられ、
前記処理ユニット群のうち対応するユニット用の圧縮命令を有する命令パケットを生成するために、各命令用の圧縮命令コードを連結する段階とを含むことを特徴とする方法。
【請求項２９】
前記命令が、オペレーションコードと、ソースレジスタアドレスと、宛先レジスタアドレスとを含み、前記割り当て段階が、前記オペレーションコードからトークンフィールドを生成する段階と、前記ソースレジスタアドレスからソースレジスタフィールドを生成する段階と、前記宛先レジスタアドレスから宛先レジスタフィールドを生成する段階と、前記トークンフィールドと前記ソースレジスタフィールドと前記宛先レジスタフィールドとを前記圧縮命令に連結する段階とを更に含むことを特徴とする上記請求項２８に記載の方法。
【請求項３０】
前記連結段階が、パケット終端インジケータを前記命令パケット内の最後の圧縮命令に付加する段階を含むことを特徴とする上記請求項２９に記載の方法。
【請求項３１】
前記割当段階は、長さゼロの圧縮命令をデフォルトのオペレーションに割り当てることによって前記超長命令ワードパケットからデフォルトの命令を取り除く段階を含むことを特徴とする上記請求項２８に記載の方法。
【請求項３２】
複数のパッドビットを前記圧縮命令パケット内に挿入する圧縮命令生成段階をさらに含み、その結果、前記圧縮命令パケットが命令メモリー内で正しく整列されることを特徴とする上記請求項２８に記載の方法。
【請求項３３】
複数の処理ユニットを有するプロセッサ用の超長命令ワードパケット群に含まれる可変長命令群を圧縮及び解凍するためのシステムであって、各超長命令ワードパケットが各処理ユニット用の命令を含み、
前記処理ユニット群のうち対応する各ユニット用の命令を含んだ超長命令ワードパケットを生成する手段と、
前記超長命令ワード命令パケット内の各命令に圧縮された命令コードを割り当てる手段と、前記コードは異なる長さであって、且つより長さの短い圧縮命令コードが頻繁に発生する命令に割り当てられ、
前記処理ユニット群のうち対応するユニット用の圧縮命令を有する圧縮命令パケットを生成するために、各命令用の圧縮命令コードを連結する手段と、
前記複数の圧縮命令パケット群を複数の記憶場所に記憶する手段と、各圧縮命令パケットは前記処理ユニット群の中の１つに関係する圧縮命令を含んでいて、
前記記憶手段にアクセスして選択された圧縮命令パケットを検索する手段と、
前記検索された圧縮命令パケットを前記圧縮命令コードに分離する手段と、
前記関係する各処理ユニット用の可変長命令を生成するために、前記圧縮命令コードの各々を解凍する手段と、
前記解凍手段で解凍された可変長命令を前記関係処理ユニットに向けて経路指定する手段とを備えたことを特徴とするシステム。
【請求項３４】
複数の処理ユニットを有するプロセッサ用の超長命令ワードパケット群に含まれる可変長命令群を圧縮及び解凍するための方法であって、各超長命令ワードパケットが各処理ユニット用の命令を含み、
前記処理ユニット群のうち対応する各ユニット用の命令を含んだ超長命令ワードパケットを生成する段階と、
前記超長命令ワードパケット内の各命令に圧縮された命令コードを割り当てる段階と、前記コードは異なる長さであって、且つより長さの短い圧縮命令コードが頻繁に発生する命令に割り当てられ、
前記処理ユニット群のうち対応するユニット用の圧縮命令を有する圧縮命令パケットを生成するために、各命令用の圧縮命令コードを連結する段階と、
前記複数の圧縮命令パケット群を複数の記憶場所に記憶する段階と、
前記記憶段階にアクセスして選択された圧縮命令パケットを検索する段階と、
前記検索された圧縮命令パケットを前記圧縮命令コードに分離する段階と、
前記関係する各処理ユニット用の可変長命令を生成するために、前記圧縮命令コードの各々を解凍する段階と、
前記解凍された可変長命令を前記関係処理ユニットに向けて経路指定する段階とを含むことを特徴とする方法。
【発明の詳細な説明】
発明の背景
本発明は、一般的にはプロセッサ内の命令用記憶スペースを削減するためのシステム及び方法に関し、特に、プロセッサ内のメモリーに記憶される非常に長い命令ワードを圧縮、解凍するためのシステム及び方法に関する。
リアルタイムディジタル信号処理、リアルタイムビデオ処理、リアルタイム画像解凍等、ある種のタスクでは、画素表示データのような大量のデータをリアルタイムで迅速に処理する高速処理システムが必要とされる。このような高速処理システムでは、例えば、クロックサイクル毎に５つの個別の機能ユニットのために５つの個別の命令を処理する超長命令ワード（ＶＬＩＷ）プロセッサのような複雑なプロセッサが採用される。このようなプロセッサでは、１５０ビット長にも達する超長命令ワードが用いられ、この超長命令ワードを記憶するために大量のメモリーが必要となる。これら超長命令ワードを記憶するための超大容量メモリーは高価である。通常のＶＬＩＷプロセッサでは、これら超長命令ワードの長さは１５０ビットにも達する。これら超長命令ワードを使用すれば、例えば、５つの処理ユニットが同時に５つの個別のデータを処理できるようになるが、超長命令ワードを記憶するのは困難である。加えて、各クロックサイクルの間、全ての多重機能ユニットを常時フルに使用することはできない。しかし、通常のＶＬＩＷプロセッサでは、各クロックサイクル毎に決められた数のビットが各機能ユニットに割り当てられているので、使用されていない機能ユニットが有れば、超長命令ワード内のビットの幾つかが無駄なことになる。超長命令ワード内の無駄なビットのせいで、メモリー記憶スペースも又無駄になる。無駄なメモリースペースのせいで簡単なプログラムでも命令メモリーを一杯にすることになるが、これは命令ワードが大変長いからである。更に、ビデオ解凍プログラムや画像生成プログラムのようなより複雑なプログラムは、命令メモリー内に完全に記憶することはできないので、メモリー内に継続的に再ロードしなければならなくなる。プログラムをメモリー内に継続的に再ロードすると、プログラムの速度は許容不可能なレベルにまで低下する。
このように、超長命令ワードを記憶するのに必要なメモリーの量を低減するためのシステム及び方法が必要とされている。メモリーユニットと演算ユニットのように処理ユニットを２つだけ有するある従来型の処理システムは、メモリー内に記憶される処理ユニット各々に対して別々の命令を持っている。このため、プロセッサが他のもう一つの命令を受け取る準備を整える際には、２つの隣接する命令は、ある規準に則ってプロセッサに入る前に互いに連結されるか否かが決められる。隣接する命令を連結するためには、命令はメモリー命令（即ち、ロード又は記憶）と演算ロジックユニット命令でなければならない。連結されたメモリーは、プロセッサがより高速に処理できる。このシステムはプロセッサの処理速度を上げるが、全長命令がメモリー内に記憶されるので、オーバーヘッドの処理を必要とし命令に必要なメモリーの量を低減することはない。
例えば４０ビットの短い命令と、例えば８０ビットの長い命令の両方がある従来型ＶＬＩＷプロセッサシステムもある。短い命令はループを起動するのに使用され、長い命令ワードは実際の内部ループに使用される。この長短の命令を選択すれば、処理速度を上げ、ある命令のサイズを低減することはできるかもしれないが、命令メモリースペースを低減する問題に適切に取り組むわけではない。もう一つのＶＬＩＷプロセッサシステムでは命令キャッシュを使っており、命令キャッシュの一部がシステム内の各処理ユニット専用になっている。このシステムも命令の処理を高速化できる。このシステムは命令メモリースペースも低減するが、超長命令ワード内にはなお無駄なビットがある。又他のＶＬＩＷシステムでは種々のタイプの命令を互いにグループ化して並列性を高め、処理の高速化を図っているが、命令メモリースペースの課題に取り組んではいない。又更に他のＶＬＩＷシステムは、固定長命令パケット内に含まれる可変長命令を有している。これらのシステムはどれも、超長命令ワードを記憶するのに必要なメモリーサイズを効率よく低減する方法を提供していない。このように、これら従来型システムは高価で、超長命令ワードのサイズが大きいために、複雑なプログラムをシステムの命令メモリー内に完全に記憶することはできない。
従って、超長命令ワードを記憶するのに必要なメモリーの量を低減し、既知の装置の種々の問題を回避できるシステム及び方法が求められており、それこそが本発明の目指すところである。
発明の概要
本発明は、ＶＬＩＷプロセッサ内の超長命令ワードを記憶するのに必要なメモリーの量を低減するためのシステムと方法を提供することにより、上記及びその他の問題に取り組むものである。本発明は、これら超長命令ワードを圧縮してそのサイズを低減して、メモリー内に記憶しなければならない超長命令ワードのサイズを低減することにより、これを達成する。本発明は、命令パケットとして知られているフォーマットで、複数の処理ユニットそれぞれに対する多数の圧縮された命令を生成、記憶し、処理ユニットが実行する直前に解凍する。命令は種々の方法で圧縮する（即ち、革命レイのサイズを低減する）ことができる。例えば命令パケット内には通常幾つかの使用されないビットがある。例えば、処理ユニットが使用されておらずノーオペレーション命令又はデフォルト命令を実行している場合でも３２ビット長の処理ユニット命令が使われるので、使用されないビットが存在する。ノーオペレーション命令は命令がないことかもしれないが、デフォルト命令は、例えば複数の機能ユニットにその２つのインプットを互いに掛けさせるのかもしれない。しかし、デフォルト又はノーオペレーオン命令は全３２ビットを必要とはしない。代表的ＶＬＩＷプロセッサシステムでは、処理システムの約１／２だけが、いかなる所与の時間においても有効な命令を実際に処理している。処理ユニットの残りの半分はデフォルト命令を処理している。先に述べたように、これらデフォルト命令はそれぞれ短縮できる。このように、処理ユニットの幾つかはデフォルト命令を実行しているので、超長命令ワードは本発明に従って圧縮することができる。更に、処理ユニットによって実行さえる命令の大部分は超長命令ワード内で利用できるビット全てを使用する必要は無く、従ってこれらのビットは圧縮できる。更に、デフォルト命令を始めとして長い命令それぞれに短いコードを割り当て、実行時にこれらのコードを拡張することによって、命令を圧縮することができる。
本発明は、複数の命令を含む命令パケットが生成され、予め定められた長さを有する圧縮された命令が命令パケット内の１つの命令に割り当てられる、命令圧縮、解凍のシステム及び方法を提供する。より高い頻度で発生する命令に対し、より短い圧縮された命令が使用される。圧縮された複数の命令を含む１つの命令パケットが生成され、解凍されると、前記処理ユニットそれぞれの演算を制御することになる。複数の前記命令パケットを複数の記憶位置に記憶し、記憶システム内の選択された可変長命令パケットを指すアドレスを生成し、前記選択された命令パケット内の前記圧縮された命令を解凍して前記処理ユニットそれぞれに対する可変長命令を生成することによって解凍がおこなわれる。本発明は、前記解凍された可変長命令を前記処理ユニットそれぞれに経路指定することもできる。
【図面の簡単な説明】
図１は、複数の処理ユニットを含むパイプラインプロセッサのブロック線図である。
図２は、図１に示す処理ユニットの制御に使用される超長命令ワードの線図である。
図３Ａ及び図３Ｂは、本発明による、圧縮された命令の２種類の異なるフォーマットを示す線図である。
図４は圧縮前の超長命令ワードがどのように圧縮されるかを示す線図である。
図５は、本発明による、超長命令ワード（ＶＬＩＷ）解凍システムのブロック線図である。
図６は、図５に示すＶＬＩＷ解凍システムのより詳細なブロック線図である。
図７は、複数の命令パケットを含む命令メモリーを示す線図である。
図８は、本発明による、これらメモリーブロックのアドレス指定を示す命令メモリーブロックの線図である。
図９は、本発明による、圧縮されたＶＬＩＷ命令パケットの圧縮されていない超長命令ワードへの解凍を示す線図である。
好適な実施例の詳細な説明
本発明は、プロセッサ内の命令メモリーのサイズを低減するためのシステム、特に、ＶＬＩＷプロセッサ内の超長命令ワードを圧縮、解凍するためのシステムに適している。本発明をこのような背景の下に説明する。しかし本発明は広範な用途に対応できることも理解いただきたい。
図１は、本発明による命令圧縮、解凍システムを含む超長命令ワード（ＶＬＩＷ）プロセッサ２０の線図である。ＶＬＩＷプロセッサ２０は、実行制御ユニット（ＥＣＵ）２６、レジスタのセット２８、マルチプライヤユニット（ＭＵＬ）３０、演算ロジックユニット（ＡＬＵ）３２、レジスタ制御ユニット（ＲＣＵ）３４、メモリーユニット（ＭＥＭ）３６のような複数のシステムユニットを電気的に相互連結するオペレーションコードソースバス２２とリザルトバス２４とを含んでいる。本発明は、図示するアーキテクチャに限定されるわけではなく、例えば、２つ以上のＭＵＬを含んでいてもよく、ＡＬＵを含んでいなくてもよい。ＥＣＵ、ＭＵＬ、ＡＬＵ、ＲＣＵ、ＭＥＭの各ユニットは処理ユニットとして知られている。ＶＬＩＷプロセッサ内では処理ユニットが互いに並行に接続され、各処理ユニットが、超長命令ワードに含まれる命令を同時に処理できるようになっている。ＥＣＵ２６はＶＬＩＷプロセッサ内の命令の検索と実行を制御する。レジスタ２８は、プロセッサ内の種々の処理ユニットに利用されるデータを記憶し、ＭＵＬユニット３０は２つのレジスタからの２個のデータを乗算して積の値を又他のレジスタに記憶し、ＡＬＵ３２は各データにつき種々の算術関数と論理演算を実行する。ＲＣＵ３４はある特定のレジスタを制御し、ＭＥＭユニット３６は他の処理ユニットのプロセッサ内の種々の記憶システムへのアクセスを制御する。一般的に、図示のＶＬＩＷプロセッサは、上記処理ユニットそれぞれが個別の命令を同時に実行できるので、各クロックサイクル当たり命令を５個まで実行できる。
ＥＣＵ２６も、命令メモリーバス４２によって複数の命令メモリー３８、４０に接続されている。命令メモリーはランダムアクセスメモリー（ＲＡＭ）３８、及び読み取り専用メモリー（ＲＯＭ）４０である。これらのメモリーは、フラッシュメモリー、電気的消去可能プログラム可能読み取り専用メモリー（ＥＥＰＲＯＭ）のような他のタイプの記憶装置でもよい。これらの命令メモリーは、ＥＣＵユニットにより種々の処理ユニットへと経路指定される命令を超長命令ワードとして記憶する。命令ＲＯＭ４０は度々使用される命令を記憶し、これがＲＡＭに記憶される必要の無いようにする。
ＭＥＭユニット３６は、データメモリー４４、４６にデータメモリーバス４８で接続される。データメモリー４４、４６はＲＡＭとＲＯＭになっているが、消去可能なプログラム可能読み取り専用メモリー（ＥＰＲＯＭ）、フラッシュメモリー、ＥＥＰＲＯＭ等の他のタイプのメモリーでもよい。これらのデータメモリーはＶＬＩＷプロセッサで演算されているデータを記憶する。データＲＯＭ４６はＶＬＩＷが度々使用するデータ又はデータ構造を記憶する。これら処理ユニット全てを同時に制御するため、図２に示すような超長命令ワードが使用される。
図２は、図１に示す処理ユニットの全てを制御するために使われる超長命令ワードの１例の線図である。本発明は、超長命令ワード内の命令の特定の順序、又は超長命令ワード内の命令の特定の数に限定されるものではない。例えば、ＶＬＩＷプロセッサは２つのＭＵＬユニットを有していて、従って各超長命令ワードが２つのＭＵＬ命令を有するようになっていてもよい。超長命令ワードは、例えば１６０ビットのような多数のビットで形成され、個々の処理ユニットを個別に制御する複数の命令ワードを含む各部分から成っている。例えばECU_CTRLはＥＣＵユニットを制御する３２ビット命令ワード６２である。MUL_CTRL命令ワード６４はＭＵＬユニットを制御し、これも３２ビット長である。ALU_CTRL命令ワード６６はＡＬＵユニットを制御し、これも又３２ビット長である。RCU_CTRL命令ワード６８はＲＣＵを制御し、１６ビット長である。最後に、MEM_CTRL命令ワード７０はＭＥＭユニットを制御し、６４ビット長迄ある。各処理ユニットの対するこれら命令ワード各々のフォーマットは当該技術分野ではよく知られており、命令ワードと処理ユニットに対する制御信号との間に殆ど又は全く処理のないＲＩＣＳ型プロセッサアーキテクチャに従っている。図示するように、これら命令ワードは全て互いに連結され超長命令ワードを形成する。この超長命令ワードは１６０ビット長にも達する。もっと多くの処理ユニットを有するＶＬＩＷプロセッサはもっと長い命令ワードを有するであろうから、本発明は超長命令ワードの特定の長さに限定されるわけではない。図示するように、これら種々の命令ワード６２−７０は連結されてＶＬＩＷ６０を形成する。理解いただけるように、複雑なプログラムの場合など、命令メモリー３８及び４０がこのようなＶＬＩＷを多数記憶しなければならない場合にはメモリーのサイズが非常に大きくなる。本発明は、以下述べるように、この超長命令ワードを圧縮、解凍するためのシステムと方法を提供することによって、このような事態を回避する。
図３Ａは、本発明による、個々の処理ユニットに対する圧縮された命令ワード１１０のフォーマットの線図である。図示されている圧縮された命令ワードは１６ビット型式である。圧縮された命令ワードは、同様なフォーマットを有しており以下図３Ｂに関して説明する３２ビット型式或いは４８ビット型式でもよく、０ビットフォーマット（デフォルト命令）でもよい。０ビットの圧縮された命令を以下に説明する。より長さの短い圧縮された命令ワードは、よりしばしば生じる圧縮されていない命令ワードに割り当てるのが好ましく、こうすれば最も高い頻度で使用される命令を大量に圧縮することになるからである。例えば、１６ビット型式は命令の大部分に使用され、次に、より長い型式（３２ビット長、４８ビット長、６４ビット長等）が他の全ての命令に対して用いられる。即値データ等ある種のデータは１６ビットの圧縮された命令に適合させることができないので、ある種の命令はより長いフォーマットを使用する。１６ビットの圧縮された命令ワード１１０には、ストップビット１１３を含むトークンフィールド１１２と、ソースレジスタフィールド１１４と、宛先レジスタフィールド１１５が含まれる。トークン、ソースレジスタ、宛先レジスタの各フィールドに割り当てられるビットの数は変わり、図示している圧縮された命令はほんの１例に過ぎない。この特定の命令が、圧縮された命令パケット内の最後の命令である場合、ストップビットは「１」にセットされる。命令が命令パケット内の最後の命令ではない場合、ストップビットはセットされない（即ち「０」である）。このように、１６ビットの圧縮された命令に関して、ストップビットはＥＣＵユニット及びプロセッサに対し、何処で１つの圧縮された命令パケットが終わり、次の圧縮された命令パケットが始まるかを示す。
５ビット幅のトークンフィールド１１２は、圧縮されていない命令のオペレーション（「op」）コード、制御ワード、フォームワードに対応するトークンを記憶する。トークンは、各トークンが命令セット中の唯１つの圧縮されていない命令に対応するように選ばれる。このように、トークンフィールドは、以下に説明するように、解凍システムが命令の影響を受ける処理ユニット並びにその処理ユニットに対する実際の命令の両方を決められるようにする。トークンフィールドは事実上、処理ユニットを特定し、且つ実際の圧縮されていない命令を特定する。トークンユニットは圧縮されていない命令にどんな方法で割り当ててもよいが、先に説明したように、最大の圧縮は、最も短い命令ワードが最も高頻度で使用される命令に割り当てられる際に生じる。
ソースレジスタフィールド１１４は５ビットであり、プロセッサ内のどのレジスタが命令に関するソースデータを記憶するのに使用されているかを定める。圧縮されていない命令からのソースレジスタアドレスは、圧縮されこのソースレジスタフィールド内におかれる。この実施例では、ソースフィールドは５ビット有しているので、レジスタを３２（２5＝３２）個まで特定することができる。同様に、宛先レジスタフィールド１１８は５ビット有しているので、レジスタを３２個まで規定することができる。圧縮されていない命令からの宛先レジスタアドレスは、圧縮されこのフィールド内におかれる。しかし本発明は、圧縮された命令内の特定のサイズのフィールドに限定されるわけではない。
opコード、ソースレジスタアドレス、宛先レジスタアドレスに加えて、制御ワード或いはopコードのフォームなど他のビットが、以下に述べるように、トークンフィールドにエンコードされその後解凍システムにより再生される圧縮されていない命令の中にある。更に圧縮を進めるため、デフォルト命令が超長命令ワードから取り除かれ、ゼロビット命令ワードに圧縮されているものとして取り扱われる。解凍システムは、各処理ユニットに対し、命令パケット内に圧縮された命令ワードを持っていないデフォルト命令を自動的に生成する。これらのデフォルト命令はノーオペレーション（No_Op）命令であってもよく、特定のアプリケーションに対するカスタマイズされたデフォルト命令であってもよい。例えば、グラフィクス処理システムでは、デフォルト命令は処理されるべき命令のループを引き起こしてもよい。デフォルト命令は、容易に変更又はカスタマイズできるように、プロセッサ内にダウンロードすることができる。圧縮システムは以下に説明するように、パッド命令を追加することもできる。
図３Ｂは、本発明による３２ビットの圧縮された命令１１６の例である。図示のように、この３２ビットの圧縮された命令は、トークンフィールド１１２、ソースレジスタフィールド１１４、宛先レジスタフィールド１１５を有しており、先に述べたように、同様の型式のデータを含んでいる。しかし、１６ビットより長い圧縮された命令の何れに関しても、その圧縮された命令がパケット内の最後の圧縮された命令であるかを示すパケット終端インジケータの位置は動かされている。図示のように、パケット終端（EP）／パケット非終端（NEP）フィールド１１７及び第２トークンフィールド１１８が長い圧縮された命令の中にある。EP/NEPフィールドによって、システムは、特定の圧縮された命令が圧縮された命令パケットの終端にあるか否かを確認でき、これは１６ビット長の圧縮された命令でのストップビット１１３と同じ機能を果たす。
これらの長い圧縮された命令のために、トークンフィールド１１２は、圧縮された命令が１６ビットより長いこと、及び圧縮された命令が適切な機能ユニットに経路指定されるべきことをシステムに指示するop_コードを含んでいる。この解凍ハードウェアは１６ビット境界上の圧縮された命令を処理し、次に命令がパケットの終端であるか否かを表示するEP/NEPフィールドを見る。６４ビット長の圧縮された命令に関しては、EP/NEPフィールドは圧縮された命令の２番目又は４番目の１６ビット部分の始めにある。第２のトークンフィールド１１８は、機能ユニットが実行すべき実際のオペレーションを示す実際のトークンをを含んでいる。EP/NEPフィールドを使えば、解凍器は、圧縮された命令の長さに関係なく、パケットインジケータの終端を容易に位置づけることができる。以下、本発明による圧縮の例を説明する。
図４は、圧縮されていない超長命令ワード（ＶＬＩＷ）及び本発明による、これに対応する圧縮された命令パケット１２１の線図である。超長命令ワード１２０は、本発明に従い、コンパイラ又はアッセンブラによって圧縮される。本例に示すように、圧縮されていない命令ワードは、レジスタ１の内容がレジスタ２の内容に加算されるＡＤＤオペレーションをプロセッサ内で引き起こすかもしれない。ＡＤＤ命令を補うため、メモリー命令からのＬＯＡＤレジスタがＭＥＭユニットによって完成され、ＡＤＤ命令はＡＬＵユニットにより完成される。こうして、図示のように、MEM_CTRLワード１２２は４８ビット長のＬＯＡＤ命令を含み、ALU_CTRLワード１２５は３２ビット長のＡＤＤ命令を含み、他の処理ユニットに対する制御ワードはノーオペレーション（No_Op）又はデフォルト命令である。これらノーオペレーション（No_Op）又はデフォルト命令ワード１２３、１２４、１２６は、ＥＣＵに対しては３２ビット長、ＲＣＵユニットに対しては１６ビット長、ＭＵＬユニットに対しては３２ビット長である。このようにこの圧縮されていない超長命令ワードに必要なビットの総数は、例え処理ユニットが２個だけしか使用されていなくても、１６０ビットである。
この超長命令ワードを圧縮するには、幾つかの異なるアクションが生じる。先ず、デフォルト又はノーオペレーション命令がゼロビット長命令にまで圧縮される。本当は、デフォルト及びノーオペレーション命令は、後に説明するように解凍システムにより再挿入できるので、超長命令ワードから取り除かれる。このように、デフォルト命令を含まない超長命令ワードは、本例では、ＭＥＭ命令１２２とＡＬＵ命令１２６だけを含み、８０ビット長になる。ここでＭＥＭ命令及びＡＬＵ命令が圧縮され、命令パケットの長さが更に短くなる。
４８ビットの圧縮されていないＭＥＭ命令１２２は圧縮され、図示のように、１６ビットの圧縮された命令１２７になる。圧縮されていない命令のストップビット１２８と制御ビット１３０とは６ビットのストップビットとトークンフィールド１３２、１３４とに圧縮される。トークンフィールド１３４は、ＭＥＭ命令が命令パケット内の最後の命令ではないので、この例ではストップビット１３２を必要としない。圧縮されていない命令の中の３２ビットの即値番号１３６は、５ビットのソースレジスタフィールド１３８に適合するまで圧縮され、５ビットのレジスタアドレス１４０は宛先レジスタフィールド１４２内におかれる。このようにして、圧縮されたＭＥＭ命令１２７は１６ビット長になる。
３２ビットのＡＬＵ命令１２６も圧縮されて、ストップビット１５４及びトークンフィールド１５６と、ソースレジスタフィールド１６０と、宛先レジスタフィールド１６６とを有する１６ビットの圧縮された命令１４４になる。上記のように、ストップビット１４６、制御ビット１４８、opコード１５０、フォームビット１５２の合計１２ビットは圧縮されてストップビット１５４とトークンフィールド１５６の中におかれる。同様に、ソースレジスタフィールド１６０と宛先レジスタフィールド１６６も又生成される。トークン、ソースレジスタ、宛先レジスタの各フィールドは連結され、圧縮された命令１４４を形成する。次に、２つの圧縮された命令１２７、１４４は互いに連結され３２ビット長の命令パケット１２１を形成する。超長命令ワードがより多くの圧縮されていない命令と、より少数のNo_Opとを含んでいる場合、命令パケットはもっと長くなり、より多くの圧縮された命令を含むことになる。例えば、この３２ビットの圧縮された命令パケット１２１は、１６０ビットの圧縮されていない超長命令ワードに替わって命令メモリー内に記憶される。圧縮できる量は圧縮される命令により異なる。しかし、圧縮量を最大にする際には、最も高い頻度で使用される命令を最も小さな圧縮された命令に割り当てるのが好ましい。こうして、上記のように、普通大抵のプログラムにあるＡＤＤ命令が３２ビットから１６ビットに圧縮される。本発明はいかなる特定の割当スキームにも限定さえるものではない。
作動時、プログラムは、予め定められた量のメモリースペースを占有する一連の多くの超長命令ワード（ＶＬＩＷ）を含んでいる。先に説明したように、各個別のＶＬＩＷは、命令パケット内の圧縮された命令の数によって異なる１６ビット長ないし１２８ビット長の圧縮された命令パケットに圧縮される。次に、これらの圧縮された命令パケットはそれぞれシーケンシャルメモリーロケーションに置かれ、これらの圧縮された命令パケットがプログラムのメモリー内に占めるスペースは元のプログラムが占めていたメモリースペースより遙かに少なくなる。このように、プログラムは圧縮された命令パケットに圧縮されるので、利用できるメモリースペースの扱いか最大化される。次に、以下に述べるように、解凍システムは、処理ユニットが実行する直前に、圧縮された命令パケットのシーケンスを解凍してＶＬＩＷに戻す。
図５は、ＶＬＩＷプロセッサ２０の実行の前に圧縮された命令パケットを解凍する、本発明による解凍システム１７０のブロック線図である。この解凍システムは、例えば、ＥＣＵ内に配置される。解凍システム１７０は１２８ビット幅の命令メモリー１７２にアクセスする。命令メモリーは複数の圧縮された命令パケットを含んでいる。命令メモリーの幅は、本発明の範囲から逸脱することなく、いかなる所望のサイズにでも選定できる。これら圧縮された命令パケットは、デフォルト命令が存在しなければ、図１に示す処理ユニット各々への圧縮された命令を含んでいる。命令メモリーは第１の６４ビットのメモリー１７４と、第２の６４ビットのメモリー１７６とで構成されている。命令メモリー１７２はＥＣＵ２６によって制御される。各クロックサイクル毎に、例えば１２８ビットが命令メモリーから、どのビットが現下の命令パケットを構成するかを決め、命令パケット内の圧縮された命令を解凍し、処理ユニットそれぞれへの圧縮されていない命令を有する１６０ビット幅の超長命令ワードを出力する解凍器１７８内へと読み出される。簡潔にいえば、解凍器１７８は命令パケット内の圧縮されている命令を分離し、次に圧縮されている命令各々を解凍し、それを対応するプロセッサーに適用する。圧縮された命令それぞれを解凍するには、トークンフィールド、ソースレジスタフィールド、宛先レジスタフィールドを拡張し、拡張されたデータを互いに連結して圧縮されていない命令ワードを形成する。これらの圧縮されていない命令ワード各々とデフォルト命令を互いに連結して１６０ビットの超長命令ワードを形成する。解凍器の作動を以下詳細に説明する。
解凍器からの１６０ビットの超長命令ワードは１６０ビット幅の超長命令レジスタ１８０に読み込まれる。超長命令レジスタは圧縮されていない１６０ビットの超長命令ワードを記憶し、その命令を個々の処理ユニットへ経路指定する。処理ユニットへの命令の経路指定は、解凍器によっても行われる。図示のように、超長命令レジスタは、３２ビット命令ワードをＥＣＵ２６へ、４８ビット命令ワードをＭＥＭユニット３６へ、１６ビット命令をＲＣＵユニット３４へ、３２ビット命令をＡＬＵ３２へ、３２ビット命令ワードをＭＵＬユニット３０へとそれぞれ経路指定する。超長命令レジスタの作動を以下により詳しく説明する。このように、作動時、１６ビットないし１２８ビット長の圧縮された命令パケットは１６０ビットの超長命令ワードに解凍され、処理ユニット各々に向け経路指定される。この解凍ユニットは圧縮システムとの組み合わせで、超長命令ワードを記憶するに必要なメモリーの量を低減し、より大きいプログラムが命令メモリー内に記憶できるようにする。以下に解凍システムについてより詳しく説明する。
図６は、本発明による解凍システム１７０のより詳細な線図である。先に説明したように、解凍システムは、命令メモリー１７２、解凍器１７８、超長命令レジスタ１８０を含んでいる。解凍システム１７０は又、アドレスジェネレータ１９０を含んでいてもよい。アドレスジェネレータはＥＣＵユニットから提供される開始アドレスから次のパケットの開始アドレスを生成する。先に説明したように、命令メモリーが実際に２つのメモリー部分からなっている場合には、アドレスジェネレータは、第１のメモリーにアドレスするために第１アドレス（ＡＬＥＦＴ）を、第２のメモリーにアドレスするために第２アドレス（ＡＲＩＧＨＴ）を生成する。ＡＬＥＦＴを生成するために、オフセット回路１９２は開始アドレスに４を加え、開始アドレスのビットを右に３桁シフトする。次に、シフトされたＡＬＥＦＴアドレスはＡＬＥＦＴレジスタ１９６に記憶される。同様に、第２オフセット回路１９４を使い開始アドレスのビットを右に３桁シフトしてＡＲＩＧＨＴアドレスが生成される。次に、ＡＲＩＧＨＴアドレスはＡＲＩＧＨＴレジスタ１９８に記憶される。
命令メモリー１７２は、この実施例では計１２８ビット幅である。しかし１２８ビット幅メモリーを製作するのは現実的ではないので、もっと小さなメモリーを論理的に互いに接続して１２８ビット幅メモリーを形成している。図示のように、命令メモリーにはランダムアクセスメモリー（ＲＡＭ）２０４と読み取り専用メモリー（ＲＯＭ）２０６の両方がある。命令メモリーはＲＡＭだけ又はＲＯＭだけで構成することもできる。ＲＡＭ２０４では、１２８ビット幅のメモリーは第１の６４ビットメモリー２０８と第２の６４ビットメモリー２１０として実行される。第１及び第２のメモリーは１６ビットづつに分割され通し番号のラベルが付けられている。図示のように、後に詳しく説明するアドレススキームは、両メモリーに単一の１２８ビットメモリーとしてアドレスするので、両メモリーからの２つの６４ビットアウトプットは連結され単一の１２８ビットデータストリーム形成する。ＲＯＭ２０６命令メモリーが使用される際には、１２８ビット命令メモリーは４つの３２ビット幅ＲＯＭ２１２、２１４、２１６、２１８として実行される。ＲＡＭの場合と同じく、ＲＯＭは１２８ビット幅メモリーとしてアドレスされ、各ＲＯＭからの別々の３２ビットアウトプットは互いに連結され１２８ビットアウトプットを形成する。
ＲＡＭ２０８、２１０からのアウトプット、及びＲＯＭ２１２、２１４、２１６、２１８からのアウトプットは共に解凍器１７８内のセレクタ２２０に入り、そこでＲＡＭデータがアクセスされているか、ＲＯＭデータがアクセスされているかが選択される。セレクタのアウトプットは、圧縮された命令を有する可変長命令パケットを少なくとも１つ含む単一の１２８ビット幅データストリームである。取り出された可変長命令パケットは、次に、命令パケット内の圧縮された命令を解凍する経路選定ロジックユニットに入る。ＲＡＭ及びＲＯＭからのデータの６４ビット部分もスワップできるので、後に説明するように１２８ビット長データストリームは何れかの６４ビットメモリーブロックで始まる。このスワッピングによって、第１及び第２メモリーブロック何れかで始まるデータストリーム用に別々のデコーダーが必要ではなくなるので、解凍に必要なハードウェアが少なくなる。経路選定ロジックは又、以下に述べるように、圧縮されていない命令を適切な処理ユニットに経路指定する。
圧縮された命令を解凍するために、経路選定ロジック２２２は入ってくる命令パケットストリームを受け取り、先に説明したように、経路選定ロジックはパケット終端インジケータ（ストップビット又はep/nepビット）を命令パケットの最後の圧縮された命令の中に配置するので、命令パケットが終了したことを確認する。経路指定及び選択ロジック２２２は命令パケットの終端を確認した後、命令パケット内の圧縮された命令を分離し、デフォルト命令を同じく挿入する。このように、経路指定及び選択ロジックが命令パケット内の第１の圧縮された命令がパケットの終端であることを検知すると、その命令は解凍され、デフォルト命令が他の全ての処理ユニットに対して生成される。この実施例では、命令パケットの最小サイズは１６ビットなので、全処理ユニットに対するデフォルト命令を含む命令パケットでも１６ビット長である。
デフォルト命令ではない圧縮された命令はそれぞれ、先ず圧縮された命令内のトークンをＶＬＩＷプロセッサ内の全トークンと比較し、対応する圧縮されていない命令opコードを生成することによりデコードされる。所定の圧縮されていない命令へのトークンの割当は、先に述べたように、圧縮システムにより行われる。適当な圧縮されていない命令opコードが一旦決められると、一時的に記憶される。次に、経路指定及び選択ロジックは、先に述べたようにソースレジスタフィールドを読み、システム内の３２のレジスタの１つにアドレスするソースレジスタアドレスを生成する。次に、経路指定及び選択ロジックは宛先レジスタフィールドを読み、利用可能なレジスタの１つに対応する宛先レジスタアドレスを生成する。次に、経路指定及び選択ロジックは、opコード、ソースレジスタアドレス、宛先レジスタアドレス、全ての付加的ビットを互いに連結して圧縮されていない命令を形成する。圧縮された各命令が解凍され、デフォルト命令が全て生成された後、経路指定及び選択ロジック２２２は圧縮されていない命令を、複数のマルチプレクサ２２４、２２６、２２８、２３０、２３２を制御して各処理ユニットに向け経路指定する。命令は超長命令レジスタ１８０内に一時的に記憶される。例えば、ＥＣＵユニット用の超長命令ワード内の命令ワードはＥＣＵマルチプレクサ２２４に向け経路指定されるが、これは経路指定及び選択ロジックがそのマルチプレクサだけを選択的に使用可能とするからである。同様に、圧縮されていない命令はそれぞれ適切な処理ユニットに向け経路指定される。
図７は、複数の圧縮された命令パケットを含む命令メモリー１７２の線図である。先に述べたように、命令メモリーは６４ビット幅の第１メモリー１７４と、これも６４ビット幅の第２メモリー１７６とで構成されている。複数の圧縮された命令を含む複数の命令パケットが命令メモリー内に記憶さる。先に述べたように、各クロックサイクル毎に命令メモリーから１２８ビットづつ読み出される。多くの場合、命令パケットの長さは一様ではないので、１２８ビット中には１つより多い命令パケットが含まれている。このシステムに対するアドレススキームを、以下図８を参照しながら説明する。ＩＰ０ラベル付きの第１命令パケット２５０は３２ビット長で、命令メモリー中の何れかの１６ビット境界に任意に整列されている。このように、ＩＰ０パケットは命令メモリー中の何れの１６ビット境界（即ち０ビット、１６ビット、３２ビット、４８ビット、６４ビット、８０ビット長、９６ビット、又は１１２ビット）で始まってもよい。８０ビット長以下（即ち、図示の例では、８０、６４、４８、３２又は１６ビット）の命令パケットでありさえすれば、命令メモリー内の１６ビット境界に任意に整列できる。８０ビットを越える（即ち図示の例では、９６、１１２又は１２８ビット）命令パケットは全て、以下に説明するように、命令メモリー内のある特定のアドレスで始めるか、或いはそこに整列しなければならない。
ＩＰ０内の命令が実行される第１クロックサイクルの後、ＩＰ１のラベルが付いた１６ビット幅の次の命令パケット２５２が、ＩＰ０命令と同時にＥＣＵにより読み込まれるが、第２クロックサイクルまで解凍されず実行されない。ＩＰ２のラベルが付いた第３命令パケット２５４は４８ビット長で、第１メモリーと第２メモリーの間の境界を横切っている。しかしこのシステムでは、第１及び第２メモリーは１２８ビットを検索するために並行してアドレスされるので、命令パケットはメモリー間の境界を横切っていてもかまわない。ＩＰ３のラベルが付いた第４の命令パケット２５６は６４ビット幅で、メモリーの１２８ビット境界を横切り、次のメモリー位置に続けられていなければならない。１２８ビット境界を横切る命令メモリーから全ての命令パケットを正しく読み出すためには、第１のメモリーが第２のメモリー上のアドレスより１つ大きなアドレスでアドレスされて、第２メモリー内のデータが先ず読み出され、次に第１のメモリー内のデータが読み出されるようにしなければならなず、これは先に述べたようにメモリーブロックをスワップすることである。第２のメモリー及び第１のメモリーをアドレスするためのシステムを以下に説明する。
ＩＰ４のラベルが付いた第５の命令パケット２５８は１２８ビット長で、任意に整列させることはできない。１２８ビット長の命令パケット全てに関し、命令パケットは命令メモリーの始め（ビット０）又はメモリーの中間（ビット６４）の何れかでのみ始めることができる。この整列は、例えば、１２８ビット命令パケットが１６ビット境界に整列すれば、命令パケットが第１の命令アドレス１６−６４、第２の命令アドレス６５−１２８そして第１の命令アドレス０−１６を占めることになるので必要になるのである。ハードウェアアドレスシステムは、命令パケットの２つの異なる部分が第１のメモリー内に含まれるので、命令パケットに容易にアドレスすることはできない。
図示の実施例に関して、種々の長さの命令パケットに対し許される割当の例を以下に説明する。１２８ビット長パケットはメモリーアドレス０又は６４の何れかで開始できる。１１２ビット長パケットは、メモリーアドレス０、１６、６４又は８０で開始できる。９６ビット長パケットは、メモリーアドレス０、１６、３２、６４、８０又は９６で開始できる。８０ビット長以下（即ち８０、６４、４８、３２又は１６ビット）の命令パケットは、メモリーアドレス０、１６、３２、４８、６４、８０、９６、１１２又は１２８で開始できる。
８０ビットより大きな命令パケットが命令メモリー内に確実に適切に整列されるようにするため、長い命令パケットが適切な境界で確実に開始されるようにするために使用されるパッド命令２６０が設けられる。パッド命令は圧縮システムにより命令パケットストリーム内に挿入され、その後、解凍システムにより廃棄される。パッド命令は処理ユニットに何らかのオペレーションを行わせることはない。ここで、命令パケットの読み出しを完遂するために第１及び第２メモリーにアドレスするシステムにつき説明する。
図８は、命令パケットを第１及び第２メモリーから読み出すためのアドレスシステムを示す線図である。第１メモリーのメモリーマップ２８０と第２メモリーのメモリーマップ２８２が示されている。これらのメモリーマップは、命令パケットの最小サイズが１６ビットなので、１６ビットセグメントに分割してある。図示のように、第１メモリー位置は４つの１６ビットセグメントに対応するアドレス０、１、２、３を有し、第２メモリーはアドレス４、５、６、７を有し、第１メモリーはアドレス８、９、１０、１１を有し、以下これに準じている。このように、第１及び第２メモリーは１つの大きな１２８ビットメモリーとしてアドレスされる。
命令メモリーの１２８ビット部分がメモリーからクロックサイクル０で読まれる最初の時、Aright及びAleftアドレスは共にゼロで、これはアドレス０、１、２、３、４、５、６、７が読み出されうることを意味している。ＩＰ０に関しては、先に述べたように、３２ビット命令パケットに対応するアドレス０及び１が読み出され解凍される。次に、アドレスシステムは次の命令パケットＩＰ１が唯の１６ビットでありメモリーを増加させる必要のないことを確認する。このように、Aright及びAleftアドレスはゼロに止まる。そして、命令パケットＩＰ１が命令メモリーから読み出され、解凍され、実行される。ＩＰ２は唯の４８ビット長なので、アドレスシステムはAright及びAleftアドレス共に増加させず、ＩＰ２が読み出される。しかし、アドレスシステムはＩＰ３が１２８ビット境界を横切っていることを確認し、Aleftアドレスは１だけ増加され、アドレス８、９、１０、１１がアクセスされる。このようにして、ＩＰ３は位置６、７、８、９から読み出される。ＩＰ３を読み出す際には、先ず第２メモリー内のデータが読み出され、次に第１メモリー内のデータが読み出される。
次にアドレスシステムは、次の命令パケットＩＰ４が１２８ビット長であり、その前にパッド命令を持っていることを確認する。アドレスシステムはパッド命令に出会うと、パッド命令を読み出しこれを廃棄する。次に、次の命令パケットは１２８ビット長なので、Aright及びAleftアドレスを共に増加させ、プロセッサがアドレス１６、１７、１８、１９、１２、１３、１４、１５にアクセスできるようにする。この場合、命令パケットは先ず第２メモリー（即ち、アドレス１２、１３、１４、１５）から読み出し次に第１メモリー（即ち、アドレス１６、１７、１８、１９）から読み出さなければならない。命令パケットが第２メモリーから始まる、即ち、命令パケットが１２８ビット境界を横切っている場合は常に、第２メモリーからのデータは第１メモリーのアドレスよりも１つ少ないアドレスと共に読み出されるので、第１メモリー内のデータが先に処理される。
図９は、圧縮された命令２９０が超長命令ワード２９２に解凍されるところを示す線図である。図示のように、圧縮された命令パケットは唯の８０ビット長であり、各処理ユニットに対する圧縮された命令を含んでおり、超長命令パケットは１６０ビット長である。先に説明したように、１６ビットのＥＣＵの圧縮された命令２９４は、３２ビットのＥＣＵの命令２９６に解凍される。１６ビットのＭＥＭの圧縮された命令２９８は４８ビットのＭＥＭ命令３００に解凍される。１６ビットのＡＬＵの圧縮された命令３０２は３２ビットのＡＬＵ命令３０４に解凍される。同様に、１６ビットのＭＵＬの圧縮された命令３０６は３２ビットのＭＵＬ命令３０８に解凍され、１６ビットの圧縮されたＲＣＵの命令３１０は１６ビットのＲＣＵ命令３１２に解凍される。このように、本発明による圧縮、解凍システムは超長命令パケットを記憶するために必要なメモリーの量を大幅に低減する。
上記説明は本発明の特定の実施例に関して行ってきたが、当業者には、本実施例における変更が、本発明の原理と精神、並びに添付の請求の範囲に規定する範囲から逸脱することなく行えることを理解頂けるであろう。
【図１】
0003833269.tif 000002
【図２】
0003833269.tif 000003
【図３Ａ】
0003833269.tif 000004
【図３Ｂ】
0003833269.tif 000005
【図４】
0003833269.tif 000006
【図５】
0003833269.tif 000007
【図６】
0003833269.tif 000008
【図７】
0003833269.tif 000009
【図８】
0003833269.tif 000010
【図９】
0003833269.tif 000011