JP3776732B2 - プロセッサ装置 - Google Patents
プロセッサ装置 Download PDFInfo
- Publication number
- JP3776732B2 JP3776732B2 JP2001027066A JP2001027066A JP3776732B2 JP 3776732 B2 JP3776732 B2 JP 3776732B2 JP 2001027066 A JP2001027066 A JP 2001027066A JP 2001027066 A JP2001027066 A JP 2001027066A JP 3776732 B2 JP3776732 B2 JP 3776732B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- instruction
- shift
- value
- data
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
- Advance Control (AREA)
Description
【発明の属する技術分野】
本発明は、メモリシステムにおける非整列データを整列化するデータ処理に対して適用して好適な技術に関する。
【0002】
【従来の技術】
始めに、図6を参照して、多バイトのデータをメモリシステム中へ格納する方式について説明する。
【0003】
多バイトのデータをメモリ中へ格納する方式には、大きく分けて、ビッグエンディアン方式とリトルエンディアン方式の2つがあり、図6(a),(b)はそれぞれ、ビッグエンディアン方式およびリトルエンディアン方式での、メモリ上におけるデータのアドレスを示す。ここで、図中(1),(2),(3)はそれぞれ、ワード(32ビット)データ、ハーフワード(16ビット)データおよびバイト(8ビット)データのメモリ上のビット位置とアドレスとの関係を表し、各々32ビット幅のメモリのアドレス0〜bまでが図示されている。
【0004】
図からわかるように、ビッグエンディアン方式でデータが格納されたメモリシステム(図6(a))においては、バイト0の位置は常に最上位(最左端)のバイト位置となり、一方、リトルエンディアン方式でデータが格納されたメモリシステム(図6(b))においては、バイト0の位置は、常に最下位(最右端)のバイト位置となる。
【0005】
ところで、上記のビッグエンディアン方式でデータが格納されたメモリシステムにおいては、アドレス3からのワードデータは、図7(a)に示すような構成となる。ワードデータがこのような構成である場合、図6(a)に示したように、アドレス3のデータはメモリ上のアドレス0〜3までのワードデータにあり、アドレス4〜6はメモリ上のアドレス4〜7のワードデータにあるので、非整列データとなる。
【0006】
したがって、非整列データを整列化するためには、アドレス3のデータと、アドレス4〜6のデータとをメモリから読み出し、アドレス3のデータをレジスタのビット31〜24へ、アドレス4〜6のデータをレジスタのビット23〜0へ格納する処理を実行する必要がある。このような非整列データの整列化処理を行うために、現在までの所、幾つかの方式が提案されており、例えば、Hansenらは、USP4,814,976において、図8に示すような、非整列データをメモリからプロセッサ内蔵のレジスタへロードする特殊な命令と、プロセッサ内蔵のレジスタの値を整列化してメモリへストアするための命令を有するプロセッサ装置を提案している。
【0007】
【発明が解決しようとする課題】
ところが、Hansenらが提案するプロセッサ装置に代表される、従来までの非整列データの整列化処理においては、図7(b)に示すように、"Load Word Left"命令と"Load Word Right"命令を連続して実行する必要がある上に、Load Word Left命令の実行結果を中間的なレジスタに保持し、Load Word Right命令とマージするという処理が含まれるために、特別なシフト・マージユニットが必要となってしまう。また、非整列データをメモリにストアする場合も同様、"Store Word Left"命令と"Store Word Light"命令を連続して実行する必要がある。さらに、これらの命令は、その他のロード命令やストア命令とは動作が異なるために、実装が困難であり、また、ロード命令においては、メモリからロードした後にシフトとマージ処理を実行するために、タイミング的なクリティカルパスとなる恐れがあった。
【0008】
本発明は、従来までの非整列データの整列化処理が抱える上記の技術的課題を解決すべくなされたものであり、その目的は、特別な回路や制御を使用することなく、非整列データの整列化を高速に行うことを可能にする技術を提供することにある。
【0009】
【課題を解決するための手段】
本発明に係るプロセッサ装置の特徴は、2つのレジスタの内容を連結シフトするシフト回路と、シフト回路のシフト量を格納するシフトアマントレジスタを有し、メモリアドレスの下位ビットをシフトアマントレジスタに設定する命令を設けることにより、連結シフト処理によって非整列データの整列化を行うことにある。このような特徴を有するプロセッサ装置によれば、ロード命令、ストア命令自体は通常の命令を使用して処理を実行するので、余分な回路や制御を必要とせずに、非整列データの整列化およびアクセス処理を高速に実行することができる。
【0010】
【発明の実施の形態】
以下、図1〜図5を参照して、本発明の実施形態に係るプロセッサ装置の構成およびその動作について詳しく説明する。
【0011】
《プロセッサ装置の全体構成》
始めに、図1を参照して、本発明の実施形態に係るプロセッサ装置の構成について説明する。
【0012】
この実施形態のプロセッサ装置は、図1に示すように、命令メモリ2、命令レジスタ3、命令デコーダ4、レジスタファイル5、レジスタ書き込み情報レジスタ6a,6b、命令コードレジスタ7、イミディエートレジスタ8、ソースレジスタ9,10、実行ユニット11、シフトアマントレジスタ(SAR)12、パイプレジスタ13、パイプラインレジスタ14、データメモリ15およびセレクタ16を備える。
【0013】
《プロセッサ装置の命令実行動作》
次に、上記のプロセッサ装置の命令実行動作について説明する。
【0014】
上記の実施形態のプロセッサ装置は、一般的なプロセッサ装置と同様、5段のパイプライン構成で命令を実行する。
【0015】
すなわち、まず始めに、命令メモリ2から命令レジスタ3内へ命令を読み出す(命令フェッチステージ〜パイプラインステージ1〜)。
【0016】
命令フェッチステージが完了すると、次に、命令レジスタ3内に読み出された命令内で指定されたレジスタファイル5内のレジスタ値を読み出し、ソースレジスタ9,10に格納する。命令デコーダ4は、実行ユニット11での命令の実行を指示するための命令をデコードする。また、命令デコーダ4は、命令中にあるイミディエート(定数)値を切り出し、イミディエートレジスタ8にその値をセットする。そして、実行する命令がその実行結果をレジスタファイル内のレジスタへ書き戻す場合には、レジスタ書き込み情報レジスタ6aにそのレジスタ番号と書き戻し有効情報を格納する(命令デコードステージ〜パイプラインステージ2〜)。
【0017】
命令デコードステージが完了すると、続いて、命令デコードステージで読み出したレジスタの値若しくはイミディエート値を用いて、実行ユニット11にて命令を実行する。実行結果は、パイプラインレジスタ14若しくはシフトアマントレジスタ(SAR)12へ格納される。実行する命令がロード命令とストア命令の場合には、メモリの実効アドレスを計算し、実効アドレス値をパイプラインレジスタ14内に格納される。そして、レジスタ書き込み情報レジスタ6aの内容がレジスタ書き込み情報レジスタ6bに格納される。また、ソースレジスタ9のレジスト値がパイプレジスタ13に格納される(実行ステージ〜パイプラインステージ3〜)。
【0018】
実行ステージが完了すると、次に、メモリロード命令が、パイプラインレジスタ14の値を実効アドレスとして、データメモリ15を読み出す。読み出された値は、パイプラインレジスタ14の出力と選択され、ロード命令の実行結果若しくは実行ユニット11での演算結果を選択することができる。ストア命令の場合、ロード命令と同様、パイプラインレジスタ14の値を実効アドレス値とするデータメモリの位置へ、パイプレジスタ13の値を書き込む(メモリステージ〜パイプラインステージ4〜)。
【0019】
メモリステージが完了すると、最後に、レジスタ書き込み情報レジスタ6bの内容で、レジスタの書き戻しが有効の場合には、指定されたレジスタへ、セレクタ16の出力結果を書き込む(レジスタライトバック〜パイプラインステージ5〜)。
【0020】
《命令メモリ10内に格納される命令》
次に、図2を参照して、上記の命令メモリ10内に格納された代表的な命令について説明する。
【0021】
図2は、命令メモリ10内に格納された代表的な命令のニーモニック、機能およびオペレーションコードを示す図である。
【0022】
ロードワード(LW)命令は32ビット長の命令であり、命令のビット31〜28が1100、ビット19〜16が1110で指定される。4ビットのnnnnフィールドはロードした結果を格納するレジスタファイル5内のレジスタRnを指定する。mmmmはフィールドは実効アドレスを計算するためのレジスタファイル5内のレジスタRmを指定する。そして、レジスタRnの値と命令ビット15〜0の16ビットの定数値を32ビットに符号拡張した値を加算した結果を実効アドレスとして、データメモリ15からワード幅でデータを読み出す。このとき、実効アドレスの下位2ビットは、0として整列したワードデータを読み出す。読み出したメモリの値をレジスタファイル5内のレジスタRnに格納する。
【0023】
ストアワード(SW)命令は32ビット長の命令であり、命令のビット31〜28が1100、ビット19〜16が1010で指定される。4ビットのnnnnフィールドはメモリへストアするレジスタファイル5内のレジスタRnを指定する。mmmmフィールドは実効アドレスを計算するためのレジスタファイル5内のレジスタRmを指定する。そして、レジスタRmの値と、命令のビット15〜0の16ビットの定数値を32ビットに符号拡張した値を加算した結果を実効アドレスとして、データメモリ15へレジスタRn内の値を書き込む。このとき、実効アドレスの下位2ビットは、0として整列したワードデータをデータメモリ15へ書き込む。
【0024】
セットSARバイト(SSARB)命令は16ビット長の命令であり、命令のビット15〜12が0001、ビット3〜0が1100で指定される。mmmmフィールドは実効アドレスを計算するためのレジスタファイル5内のレジスタRmを指定する。そして、レジスタRm内のデータの下位2ビットと、命令のビット9と8の2ビットの加算した結果を実効アドレス命令の下位2ビットと考える。ビッグエンディアン方式の場合は、この値を8倍したものをシフトアマントレジスタ(SAR)12へ格納する。リトルエンディアン方式の場合は、この値を8倍したものを32から減じた値をシフトアマントレジスタ(SAR)12内に格納する。
【0025】
ファネルシフト(FSFT)命令は16ビット長の命令であり、命令のビット15〜12が0010、ビット3〜0が1111で指定される。nnnnフィールド、mmmmフィールドはそれぞれ、演算の入力になるレジスタファイル5内のレジスタRn,Rmを指定する。実行ステージでレジスタRnの値を上位32ビット、レジスタRmの値を下位32ビットとして、データを連結した64ビットのデータを作る。シフトアマントレジスタ(SAR)12の下位6ビットの値をシフト量として左シフトを行い、上位の32ビットの結果を命令の実行結果として、レジスタファイル5内のレジスタRnに格納する。
【0026】
算術右シフト(SRA)命令は16ビットの命令であり、命令のビット15〜12が0110、ビット2〜0が011で指定される。nnnnフィールドは演算の入力になるレジスタファイル5内のレジスタRnを指定する。iiiiフィールドはビット単位でのシフト量immを示す。実行ステージでレジスタRnをimmビットだけ算術右シフトし、命令の実行結果として、レジスタファイル5内のレジスタRnに格納する。なお、ここでいう算術右シフトとは、符号情報を変更しないよう、右シフトしていた上位ビットには全て最上位ビットの値を入れる処理のことを意味する。
【0027】
論理右シフト(SRL)命令は16ビット長の命令であり、命令のビット15〜12が0110、ビット2〜0が010で指定される。nnnnフィールドは、演算の入力になるレジスタファイル5内のレジスタRnを指定する。iiiiフィールドはビット単位でのシフト量immを示す。実行ステージでレジスタRn内の値をimmビットだけ論理右シフトし、命令の実行結果とし、レジスタファイル5内のレジスタRnへ格納する。なお、ここでいう論理右シフトとは、右シフトして空いた上位ビットには全て0の値を入れる処理のことを意味する。
【0028】
論理左シフト(SLL)命令は16ビット長の命令であり、命令のビット15〜12が0110、ビット2〜0が110で指定される。nnnnフィールドは、演算の入力になるレジスタファイル5内のレジスタRnを指定する。iiiiフィールドは、ビット単位でのシフト量immを示す。実行ステージでレジスタRnの内容をimmビットだけ論理左シフトし、命令の実行結果として、レジスタファイル5内のレジスタRnへ格納する。なお、ここでいう論理左シフトとは、左シフトして空いた下位ビットには全て0の値を入れる処理のことを意味する。
【0029】
ストア制御レジスタ(STC)命令は16ビット長の命令であり、命令のビット15〜12が0111、ビット3〜0が1000で指定される。nnnnフィールドをレジスタファイル5内のレジスタRnとして、レジスタファイル5から値を読み出す。読み出したレジスタの値の下位ビットをシフトアマントレジスタ(SAR)12に格納する。
【0030】
《プロセッサ装置内の構成要素の動作》
次に、上記の命令を実行する際のプロセッサ装置の各部の動作について説明する。
【0031】
命令デコーダ4は、命令レジスタ3から16ビット長若しくは32ビット長命令を入力として、その命令をデコードする。命令レジスタ11は32ビット長とし、16ビット長命令は上位16ビットに格納されているとする。命令デコーダ4は、命令レジスタ3のビット31〜28とビット19〜16の8ビットを命令コードとして命令コードレジスタ7へ出力する。また、ビット27〜24およびビット23〜20をそれぞれ、レジスタファイル5内のレジスタRnおよびレジスタファイル5内のレジスタRmを指定するフィールドとして、レジスタファイル5へ出力する。命令デコーダ4は、図3(a)に示すように、命令コードからイミディエート値を計算し、計算した値をイミディエートレジスタ8へ格納する。また、レジスタ書き込みを行う命令の場合、命令デコーダ4は、図3(b)に示すように、レジスタ書き込み情報レジスタ6aにそのレジスタ番号と書き戻し有効情報とを格納する。シフトアマントレジスタ(SAR)12への書き込みがある場合、シフトアマントレジスタ書き込み有効情報を有効にする。
【0032】
レジスタファイル5は、命令デコーダ4から読み出すレジスタRnとレジスタRmに対応するレジスタ番号を入力として、これらのレジスタの値を、ソースレジスタ9,10に出力する。また、レジスタ書き込み情報レジスタ6bの内容からレジスタ書き戻しが有効であると判断された場合には、セレクタ16の出力をレジスタ書き込み情報レジスタ6bの書き戻しレジスタ番号で指定されるレジスタ番号へ書き込む。
【0033】
実行ユニット11は、ソースレジスタ9,10、イミディエートレジスタ8おおびシフトアマントレジスタ(SAR)12の値を入力データとして、命令コードレジスタ7で指定される演算を行い、演算結果をパイプラインレジスタ14若しくはシフトアマントレジスタ(SAR)12に格納する。各命令毎のオペレーションは図4に示す通りである。なお、シフトアマントレジスタ(SAR)12への書き込みの制御はレジスタ書き込み情報レジスタ6aのシフトアマントレジスタ書き込みが有効の時だけ実行される。
【0034】
《非整列データへのアクセス方法〜具体例〜》
上記のプロセッサ装置においては、非整列データへのアクセス処理は、既述のセットSARバイト(SSARB)命令とファネルシフト(FSFT)命令を用い、連結シフト動作によって行われる。以下、図5を参照して、非整列データのアクセス処理の幾つかの具体例について説明する。
【0035】
図5(a)に示す例においては、アドレス3からワードデータをロードする(ビッグエンディアン方式)。この実施形態のプロセッサ装置においてアドレス3からワードデータをロードする際は、まず始めに、(1)ロードワード(LW)命令によって、16ビットディスプレートメント値3とソースレジスタ10のレジスタR4の値を加えたものを実効アドレスとして、メモリからデータをロードし、レジスタファイル5内のレジスタR0に格納する。そして、次に、(2)ロードワード(LW)命令によって、16ビットディスプレートメント値7とソースレジスタ10のレジスタR4の値を加えたものを実効アドレスとして、メモリからデータをロードし、レジスタファイル5内のレジスタR1に格納する。続いて、(3)セットSARバイト(SSARB)命令によって、2ビットディスプレートメント値3とソースレジスタ10のレジスタR4の値を加え、この具体例はビッグエンディアン方式であるので、加算結果を8倍したものをシフトアマントレジスタ(SAR)12に格納する。最後に、(4)ファネルシフト(FSFT)命令によって、シフトアマントレジスタ(SAR)12の値をシフト量として、レジスタR0,R1の値を連結シフトする。
【0036】
図5(b)に示す例においては、アドレス3からハーフワードデータ(符号付き)をロードする(ビッグエンディアン方式)。この実施形態のプロセッサ装置においてアドレス3からハーフワードデータをロードする際は、まず始めに(1)ロードワード(LW)命令によって、16ビットディスプレートメント値3とソースレジスタ10のレジスタR4の値を加えたものを実効アドレスとして、メモリからデータをロードし、レジスタファイル5内のレジスタR0に格納する。そして、次に、(2)ロードワード(LW)命令によって、16ビットディスプレートメント値7とソースレジスタ10のレジスタR4の値を加えたものを実効アドレスとして、メモリからデータをロードし、レジスタファイル5内のレジスタR1に格納する。次に、(3)セットSARバイト(SSARB)命令によって、2ビットディスプレートメント値3とソースレジスタ10のレジスタR4の値を加え、この具体例はビッグエンディアン方式であるので、加算結果を8倍したものをシフトアマントレジスタ(SAR)12に格納する。続いて、(4)ファネルシフト(FSFT)命令によって、シフトアマントレジスタ(SAR)12の値をシフト量として、レジスタR0,R1の値を連結シフトする。最後に、(5)レジスタファイル5内のレジスタR0の値をイミディエートレジスタ8の下位5ビットで指定されるシフト量だけ算術右シフトし、結果をレジスタR0に格納する。
【0037】
図5(c)に示す例においては、リトルエンディアン方式においてアドレス3からワードデータをロードする。リトルエンディアン方式においてアドレス3からワードデータをロードする際は、始めに、ビッグエンディアン方式と同様にして、(1)ロードワード(LW)命令によって、16ビットディスプレートメント値3とソースレジスタ10のレジスタR4の値を加えたものを実効アドレスとして、メモリからデータをロードし、レジスタファイル5内のレジスタR0に格納する。また、(2)ロードワード(LW)命令によって、16ビットディスプレートメント値7とソースレジスタ10のレジスタR4の値を加えたものを実効アドレスとして、メモリからデータをロードし、レジスタファイル5内のレジスタR1に格納する。次に、(3)セットSARバイト(SSARB)命令によって、2ビットディスプレートメント値3とソースレジスタ10のレジスタR4の値を加え、リトルエンディアン方式であるので、32から加算結果の下位2ビットを8倍した値を減じた値をシフトアマントレジスタ(SAR)12に格納する。最後に、(4)ファネルシフト(FSFT)命令によって、シフトアマントレジスタ(SAR)12の値をシフト量として、レジスタR1,R0の値を連結シフトする。
【0038】
図5(d)に示す例においては、リトルエンディアン方式において、アドレス3からハーフワードデータ(符号付き)をロードする。リトルエンディアン方式において、アドレス3からハーフワードデータをロードする際は、ビッグエンディアン方式と同様、まず始めに(1)ロードワード(LW)命令によって、16ビットディスプレートメント値3とソースレジスタ10のレジスタR4の値を加えたものを実効アドレスとして、メモリからデータをロードし、レジスタファイル5内のレジスタR0に格納する。また、(2)ロードワード(LW)命令によって、16ビットディスプレートメント値7とソースレジスタ10のレジスタR4の値を加えたものを実効アドレスとして、メモリからデータをロードし、レジスタファイル5内のレジスタR1に格納する。次に、(3)セットSARバイト(SSARB)命令によって、2ビットディスプレートメント値3とソースレジスタ10のレジスタR4の値を加え、リトルエンディアン方式であるので、32から加算結果の下位2ビットの値を8倍した値を減じた値をシフトアマントレジスタ(SAR)12に格納する。続いて、(4)ファネルシフト(FSFT)命令によって、シフトアマントレジスタ(SAR)12の値をシフト量として、レジスタR1,R0の値を連結シフトする。次に、(5)論理左シフト(SLL)命令によって、レジスタファイル5内のレジスタR1の値を16ビット論理左シフトし、結果をレジスタR0に格納する。最後に、(6)算術右シフト(SRA)命令によって、レジスタファイル5内のレジスタR1の値を16ビット算術右シフトし、結果をレジスタR0に格納する。
【0039】
図5(e)に示す例においては、上記の例とは異なり、アドレス3にワードデータR3をストアする(ビッグエンディアン方式)。この実施形態のプロセッサ装置においてアドレス3にワードデータR3をストアする際は、まず始めに(1)ロードワード(LW)命令によって、16ビットディスプレートメント値3とソースレジスタ10のレジスタR4の値を加えたものを実効アドレスとして、メモリからデータをロードし、レジスタファイル5内のレジスタR0に格納する。また、(2)ロードワード(LW)命令によって、16ビットディスプレートメント値7とソースレジスタ10のレジスタR4の値を加えたものを実効アドレスとして、メモリからデータをロードし、レジスタファイル5内のレジスタR1に格納する。次に、(3)セットSARバイト(SSARB)命令によって、2ビットディスプレートメント値3とソースレジスタ10のレジスタR4の値を加え、この具体例はビッグエンディアン方式であるので、加算結果を8倍したものをシフトアマントレジスタ(SAR)12に格納する。続いて、(4)ファネルシフト(FSFT)命令によって、シフトアマントレジスタ(SAR)12の値をシフト量として、レジスタR1,R0の値を連結シフトする。次に、(5)MOV命令によって、レジスタR1の値をレジスタR2にコピーした後、(6)セットSARバイト(SSARB)命令によって、2ビットディスプレートメント値1とソースレジスタ10のレジスタR4の値を加え、加算結果を8倍したものをシフトアマントレジスタ(SAR)12に格納する。続いて、(7)ファネルシフト(FSFT)命令によって、シフトアマントレジスタ(SAR)12の値をシフト量として、レジスタR1,R3の値を連結シフトする。次に、(8)再びファネルシフト(FSFT)命令によって、シフトアマントレジスタ(SAR)12の値をシフト量として、レジスタR3,R2の値を連結シフトする。続いて、(9)ストアワード(SW)命令によって、16ビットディスプレースメント値3とソースレジスタ10のレジスタR4の値とを加えたものを実効アドレスとして、レジスタファイル5内のレジスタR1の値をメモリへストアする。また、最後に、(10)ストアワード(SW)命令によって、16ビットディスプレースメント値7とソースレジスタ10のレジスタR4の値とを加えたものを実効アドレスとして、レジスタファイル5内のレジスタR3の値をメモリへストアする。
【0040】
《実施の形態の効果》
以上述べてきたように、この実施形態のプロセッサ装置においては、実行ユニット11の連結シフト機能を利用し、連結シフトに非整列データの整列化のためのシフト量を設定する命令を実行するので、非整列データの整列化およびアクセス処理を高速に実行することができる。また、整列化のためのシフト量を設定する命令は、ビッグエンディアン方式の場合には、定数とレジスタの加算、加算結果を8倍、上位ビットマスク、シフトアマントレジスタへの値の書き込みという4つのオペレーションを1つの命令で実行する。したがって、この命令がない場合には独立した4つの命令を実行する必要があり、それぞれの命令の実行に1サイクル要すると考えれば、従来までの処理と比較して、4倍の高速化を図ることができる。
【0041】
また、非整列データの整列化を実行するロード命令やストア命令を設けることによりメモリデータの整列化を高速に行うことも可能であるが、この場合は専用のシフト・マージ回路が必要となり、また、特別なロード命令、ストア命令のために制御が複雑になってしまう。これに対し、この実施の形態のプロセッサ装置においては、ロード命令、ストア命令自体は通常の命令を使用するので、このような欠点を解消することができる。また、連結シフトは、非整列データの整列化処理以外にもデータのローテータ等にも汎用的に使用することができるというメリットがある。
【0042】
《その他の実施の形態》
以上、本発明者らによってなされた発明を上記実施形態によって記載したが、この開示の一部をなす論述および図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例および運用技術が明らかとなろう。
【0043】
例えば、上記の実施の形態においては、プロセッサのデータパス幅が32ビットで、メモリのアクセスがワード単位で行う場合を説明したが、データパス幅が16ビット、64ビット、128ビット等、異なるデータ幅の場合も同様に本発明を適用することができる。すなわち、データパス幅が64ビットの場合は、メモリとの転送を64ビットで行う。シフアマントレジスタへは、ビッグエンディアン方式の場合は、アドレスの下位3ビットを8倍したものを格納すれば良い。一方、リトルエンディアン方式の場合には、アドレスの下位3ビットを8倍したものを64から減じたものをシフトアマントレジスタへ格納する。
【0044】
このように、本発明はここでは記載していない様々な実施の形態等を包含するということを理解すべきである。したがって、本発明はこの開示から妥当な特許請求の範囲に係る発明特定事項によってのみ限定されるものである。
【0045】
【発明の効果】
本発明のプロセッサ装置によれば、特別な回路や制御を必要とせずに、非整列データの整列化を高速に行うことができる。
【図面の簡単な説明】
【図1】本発明の実施形態に係るプロセッサ装置の構成を示す模式図である。
【図2】上記のプロセッサ装置内の命令メモリ内に格納された一部の命令を示す図である。
【図3】命令とイミディエート値の関係および命令と書き戻し有効情報の関係を示す図である。
【図4】命令のオペレーションを示す図である。
【図5】本発明の実施形態に係るプロセッサ装置を用いた非整列データの整列化処理の具体例を示す図である。
【図6】ビッグエンディアン方式およびスモールエンディアン方式のメモリデータの配置を説明するための図である。
【図7】従来までの非整列データの整列化処理を説明するための図である。
【図8】従来までの非整列データの整列化処理に用いられる命令の一例を示す図である。
【符号の説明】
1 プロセッサ装置
2 命令メモリ
3 命令レジスタ
4 命令デコーダ
5 レジスタファイル
6a,6b レジスタ書き込み情報レジスタ
7 命令コードレジスタ
8 イミディエートレジスタ
9,10 ソースレジスタ
11 実行ユニット
12 シフトアマントレジスタ
13 パイプレジスタ
14 パイプラインレジスタ
15 データメモリ
16 セレクタ
Claims (5)
- 演算のための入力データを格納するレジスタファイルと、
前記レジスタファイルから読み出した第1のレジスタ値を格納する第1レジスタと、
前記レジスタファイルから読み出した第2のレジスタ値を格納する第2レジスタと、
ファネルシフト命令が入力されるのに応じて、第1および第2のレジスタ値を連結し、連結した値をシフトアマントレジスタ内に格納されたシフト量だけビット単位でシフトする実行ユニットとを具備し、
前記実行ユニットにおいて、命令中のオペランドで示されるアドレスの下位ビットを8倍した値を非整列データのシフト量として計算し、前記シフトアマントレジスタに格納するシフト量設定命令を有すること
を特徴とするプロセッサ装置。 - 演算のための入力データを格納するレジスタファイルと、
前記レジスタファイルから読み出した第1のレジスタ値を格納する第1レジスタと、
前記レジスタファイルから読み出した第2のレジスタ値を格納する第2レジスタと、
ファネルシフト命令が入力されるのに応じて、第1および第2のレジスタ値を連結し、連結した値をシフトアマントレジスタ内に格納されたシフト量だけビット単位でシフトする実行ユニットとを具備し、
前記実行ユニットにおいて、プロセッサ装置のデータパスが32ビットの場合、命令中のオペランドで示されるアドレスの下位2ビットを8倍した値を非整列データのシフト量として計算し、前記シフトアマントレジスタに格納するシフト量設定命令を有すること
を特徴とするプロセッサ装置。 - 演算のための入力データを格納するレジスタファイルと、
前記レジスタファイルから読み出した第1のレジスタ値を格納する第1レジスタと、
前記レジスタファイルから読み出した第2のレジスタ値を格納する第2レジスタと、
ファネルシフト命令が入力されるのに応じて、第1および第2のレジスタ値を連結し、連結した値をシフトアマントレジスタ内に格納されたシフト量だけビット単位でシフトする実行ユニットとを具備し、
前記実行ユニットにおいて、データパスのビット幅から命令中のオペランドで示されるアドレスの下位ビットを8倍した値を減じた値を非整列データのシフト量として計算し、前記シフトアマントレジスタに格納するシフト量設定命令を有すること
を特徴とするプロセッサ装置。 - 演算のための入力データを格納するレジスタファイルと、
前記レジスタファイルから読み出した第1のレジスタ値を格納する第1レジスタと、
前記レジスタファイルから読み出した第2のレジスタ値を格納する第2レジスタと、
ファネルシフト命令が入力されるのに応じて、第1および第2のレジスタ値を連結し、連結した値をシフトアマントレジスタ内に格納されたシフト量だけビット単位でシフトする実行ユニットとを具備し、
前記実行ユニットにおいて、プロセッサ装置のデータパスが32ビットの場合、32から命令中のオペランドで示されるアドレスの下位2ビットを8倍した値を減じた値を非整列データのシフト量として計算し、前記シフトアマントレジスタに格納するシフト量設定命令を有すること
を特徴とするプロセッサ装置。 - 演算のための入力データを格納するレジスタファイルと、
前記レジスタファイルから読み出した第1のレジスタ値を格納する第1レジスタと、
前記レジスタファイルから読み出した第2のレジスタ値を格納する第2レジスタと、
ファネルシフト命令が入力されるのに応じて、第1および第2のレジスタ値を連結し、連結した値をシフトアマントレジスタ内に格納されたシフト量だけビット単位でシフトする実行ユニットとを具備し、
前記実行ユニットにおいて、メモリシステムがビッグエンディアン方式の場合、命令中のオペランドで示されるアドレスの下位ビットを8倍した値を、メモリシステムがリトルエンディアン方式の場合、データパスのビット幅から命令中のオペランドで示されるアドレスの下位ビットを8倍した値を減じた値を、それぞれ非整列データのシフト量として計算し、前記シフトアマントレジスタに格納するシフト量設定命令を有すること
を特徴とするプロセッサ装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001027066A JP3776732B2 (ja) | 2001-02-02 | 2001-02-02 | プロセッサ装置 |
US10/061,296 US6978359B2 (en) | 2001-02-02 | 2002-02-04 | Microprocessor and method of aligning unaligned data loaded from memory using a set shift amount register instruction |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001027066A JP3776732B2 (ja) | 2001-02-02 | 2001-02-02 | プロセッサ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002229777A JP2002229777A (ja) | 2002-08-16 |
JP3776732B2 true JP3776732B2 (ja) | 2006-05-17 |
Family
ID=18891779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001027066A Expired - Lifetime JP3776732B2 (ja) | 2001-02-02 | 2001-02-02 | プロセッサ装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6978359B2 (ja) |
JP (1) | JP3776732B2 (ja) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6986023B2 (en) * | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
EP1508853A1 (en) * | 2003-08-19 | 2005-02-23 | STMicroelectronics Limited | Computer system and method for loading non-aligned words |
JP4837305B2 (ja) * | 2005-05-10 | 2011-12-14 | ルネサスエレクトロニクス株式会社 | マイクロプロセッサ及びマイクロプロセッサの制御方法 |
US7434040B2 (en) * | 2005-07-25 | 2008-10-07 | Hewlett-Packard Development Company, L.P. | Copying of unaligned data in a pipelined operation |
US8099448B2 (en) | 2005-11-02 | 2012-01-17 | Qualcomm Incorporated | Arithmetic logic and shifting device for use in a processor |
US20070124631A1 (en) * | 2005-11-08 | 2007-05-31 | Boggs Darrell D | Bit field selection instruction |
US20070226453A1 (en) * | 2006-03-23 | 2007-09-27 | Eichenberger Alexandre E | Method for improving processing of relatively aligned memory references for increased reuse opportunities |
US8127117B2 (en) | 2006-05-10 | 2012-02-28 | Qualcomm Incorporated | Method and system to combine corresponding half word units from multiple register units within a microprocessor |
US8417922B2 (en) * | 2006-08-02 | 2013-04-09 | Qualcomm Incorporated | Method and system to combine multiple register units within a microprocessor |
US20080162879A1 (en) * | 2006-12-29 | 2008-07-03 | Hong Jiang | Methods and apparatuses for aligning and/or executing instructions |
US20080162522A1 (en) * | 2006-12-29 | 2008-07-03 | Guei-Yuan Lueh | Methods and apparatuses for compaction and/or decompaction |
US7908463B2 (en) * | 2007-06-26 | 2011-03-15 | Globalfoundries Inc. | Immediate and displacement extraction and decode mechanism |
JP5068597B2 (ja) * | 2007-08-01 | 2012-11-07 | ルネサスエレクトロニクス株式会社 | プロセッサ及びプロセッサによるデータ読み出し方法 |
JP5380102B2 (ja) * | 2009-02-16 | 2014-01-08 | 株式会社東芝 | マイクロプロセッサ |
JP5659772B2 (ja) * | 2010-12-17 | 2015-01-28 | 富士通株式会社 | 演算処理装置 |
US20120254589A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
CN107066238A (zh) * | 2017-04-18 | 2017-08-18 | 上海兆芯集成电路有限公司 | 执行高速缓存行未对齐加载指令的系统和方法 |
US20190138308A1 (en) * | 2017-09-15 | 2019-05-09 | MIPS Tech, LLC | Unaligned memory accesses |
US11036506B1 (en) * | 2019-12-11 | 2021-06-15 | Motorola Solutions, Inc. | Memory systems and methods for handling vector data |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3916388A (en) * | 1974-05-30 | 1975-10-28 | Ibm | Shifting apparatus for automatic data alignment |
US4219874A (en) * | 1978-03-17 | 1980-08-26 | Gusev Valery | Data processing device for variable length multibyte data fields |
US4814976C1 (en) | 1986-12-23 | 2002-06-04 | Mips Tech Inc | Risc computer with unaligned reference handling and method for the same |
CA2045705A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | In-register data manipulation in reduced instruction set processor |
EP0470570B1 (en) * | 1990-08-09 | 1997-01-29 | Silicon Graphics, Inc. | Method and apparatus for byte order switching in a computer |
KR100248903B1 (ko) * | 1992-09-29 | 2000-03-15 | 야스카와 히데아키 | 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템 |
US5922066A (en) * | 1997-02-24 | 1999-07-13 | Samsung Electronics Co., Ltd. | Multifunction data aligner in wide data width processor |
US6061779A (en) * | 1998-01-16 | 2000-05-09 | Analog Devices, Inc. | Digital signal processor having data alignment buffer for performing unaligned data accesses |
US6282633B1 (en) * | 1998-11-13 | 2001-08-28 | Tensilica, Inc. | High data density RISC processor |
US6430684B1 (en) * | 1999-10-29 | 2002-08-06 | Texas Instruments Incorporated | Processor circuits, systems, and methods with efficient granularity shift and/or merge instruction(s) |
US6654872B1 (en) * | 2000-01-27 | 2003-11-25 | Ati International Srl | Variable length instruction alignment device and method |
US6721866B2 (en) * | 2001-12-21 | 2004-04-13 | Intel Corporation | Unaligned memory operands |
-
2001
- 2001-02-02 JP JP2001027066A patent/JP3776732B2/ja not_active Expired - Lifetime
-
2002
- 2002-02-04 US US10/061,296 patent/US6978359B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002229777A (ja) | 2002-08-16 |
US6978359B2 (en) | 2005-12-20 |
US20020108027A1 (en) | 2002-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3776732B2 (ja) | プロセッサ装置 | |
US5687336A (en) | Stack push/pop tracking and pairing in a pipelined processor | |
JP3173793B2 (ja) | 多重命令セットによるデータ処理装置及びデータ処理方法 | |
US6061783A (en) | Method and apparatus for manipulation of bit fields directly in a memory source | |
JP2796590B2 (ja) | メモリ装置及びそれを使用したデータ処理装置 | |
US6539467B1 (en) | Microprocessor with non-aligned memory access | |
KR100327778B1 (ko) | 다중명령 세트를 이용한 데이터 프로세싱 방법 | |
US8914619B2 (en) | High-word facility for extending the number of general purpose registers available to instructions | |
US5749084A (en) | Address generation unit with segmented addresses in a microprocessor | |
JPH06332792A (ja) | データ処理装置及びそのデータ読み出し制御回路,データ書き込み制御回路 | |
JPH0135366B2 (ja) | ||
JP2017539008A (ja) | データ投機実行のためのシステム、装置および方法 | |
JPH06332695A (ja) | データ処理装置及びその制御回路 | |
JPH10232779A (ja) | 命令並列処理方法及び装置 | |
JPH07120278B2 (ja) | データ処理装置 | |
US8549266B2 (en) | System and method of instruction modification | |
JP2000137612A (ja) | 特殊ミリコ―ド命令によって条件の設定およびテストを行う方法 | |
US5951676A (en) | Apparatus and method for direct loading of offset register during pointer load operation | |
EP1050800A1 (en) | A pipelined execution unit | |
JP2824484B2 (ja) | パイプライン処理計算機 | |
JP5263497B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
JP3523407B2 (ja) | 情報処理装置 | |
JP5263498B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
WO1992003777A1 (en) | Block transfer register scoreboard for data processing systems | |
JPH07262009A (ja) | パイプライン処理コンピュータ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040827 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050830 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051021 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051115 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051213 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20060123 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060223 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100303 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100303 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110303 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120303 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130303 Year of fee payment: 7 |