JP2005056238A - 2次元メモリアクセス方法および演算処理装置 - Google Patents
2次元メモリアクセス方法および演算処理装置 Download PDFInfo
- Publication number
- JP2005056238A JP2005056238A JP2003287730A JP2003287730A JP2005056238A JP 2005056238 A JP2005056238 A JP 2005056238A JP 2003287730 A JP2003287730 A JP 2003287730A JP 2003287730 A JP2003287730 A JP 2003287730A JP 2005056238 A JP2005056238 A JP 2005056238A
- Authority
- JP
- Japan
- Prior art keywords
- address
- code
- dimensional
- dimensional memory
- memory
- 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.)
- Withdrawn
Links
Images
Abstract
【課題】 簡単なハードウェア構成によって、柔軟に2次元メモリのアドレス指定を行うこと。
【解決手段】 演算処理装置1は、命令コードに含まれるインデックス値を上位および下位の5ビットに分割し、上位5ビットを縦方向のインデックス値として、下位5ビットを横方向のインデックス値として解釈することにより、メモリ10の参照先アドレスを指定することが可能である。したがって、命令コード内の限られたビット数によって、縦方向および横方向の柔軟な2次元アドレス指定を行うことが可能となる。また、そのためのハードウェア構成として、乗算器等の大規模な回路構成となるユニットを備えることなく、より簡単な構成を有する減算器41によって、2次元メモリアクセスのためのアドレス修飾の値を算出することが可能である。
【選択図】 図1
【解決手段】 演算処理装置1は、命令コードに含まれるインデックス値を上位および下位の5ビットに分割し、上位5ビットを縦方向のインデックス値として、下位5ビットを横方向のインデックス値として解釈することにより、メモリ10の参照先アドレスを指定することが可能である。したがって、命令コード内の限られたビット数によって、縦方向および横方向の柔軟な2次元アドレス指定を行うことが可能となる。また、そのためのハードウェア構成として、乗算器等の大規模な回路構成となるユニットを備えることなく、より簡単な構成を有する減算器41によって、2次元メモリアクセスのためのアドレス修飾の値を算出することが可能である。
【選択図】 図1
Description
本発明は、2次元的に配列されたメモリにアクセスするための2次元メモリアクセス方法およびそれを用いた演算処理装置に関する。
従来、2次元メモリにおいて、不規則なアドレス順序でデータを読み出したり、書き込んだりすることが行われている。例えば、画像処理においては、1枚の画像データの中で、特定のブロックのデータをメモリからレジスタに格納する場合、ブロックの一行分の画素データをレジスタに格納した後、ブロックの次行の画素データを読み込むために、2次元メモリ上の所定長離れたアドレスが参照される。
一方、2次元的に配列されたメモリにおいても、メモリ内部では、各行が連続して連なる1次元的なメモリとしてアドレスを付与されていることが一般的である。そのため、上述のように、不規則なアドレス順序で2次元メモリにアクセスする場合、縦方向への参照アドレスの変更は、アドレスの簡単なインクリメントでは行うことができない。
そこで、2次元メモリのアクセス方法として、種々の方法が提案されている。
そこで、2次元メモリのアクセス方法として、種々の方法が提案されている。
例えば、特開平3−137722号公報には、2次元アドレスによる指定に対応した構成を有するメモリに関する技術が開示されている。
また、特開昭63−6645号公報には、2次元アドレスを1次元アドレスに変換し、メモリ上の実アドレスを指定する方法に関する技術が開示されている。
しかし、これら従来の技術においては、アドレス変換のために設けられるハードウェアが比較的複雑なものとなり、消費電力が高くなるという問題がある。
また、特開昭63−6645号公報には、2次元アドレスを1次元アドレスに変換し、メモリ上の実アドレスを指定する方法に関する技術が開示されている。
しかし、これら従来の技術においては、アドレス変換のために設けられるハードウェアが比較的複雑なものとなり、消費電力が高くなるという問題がある。
さらに、特開平3−137722号公報に記載された技術のように、メモリ側で2次元アドレスに対応する構成とする場合、汎用的なメモリセルを使用することができず、拡張性が低下する、あるいは、製造コストが増大するといった問題もある。
また、特開昭63−6645号公報に記載された技術のように、2次元アドレスと1次元アドレスとを変換するハードウェアを備える場合、アドレスの変換に伴って、アクセススピードが低下する場合があるという問題もある。
また、特開昭63−6645号公報に記載された技術のように、2次元アドレスと1次元アドレスとを変換するハードウェアを備える場合、アドレスの変換に伴って、アクセススピードが低下する場合があるという問題もある。
一方、画像処理等においては、命令コード中に、メモリ上のアドレス修飾パターンを示すインデックス値を直接埋め込むアドレス指定方法(即値指定)が用いられる場合がある。
即値指定を用いる場合、上述の公報に記載された技術のように複雑なハードウェア構成とすることなく、一般に、比較的簡単なハードウェア構成でアドレス変換を行うことができる。
即値指定を用いる場合、上述の公報に記載された技術のように複雑なハードウェア構成とすることなく、一般に、比較的簡単なハードウェア構成でアドレス変換を行うことができる。
そのため、上述の技術に比べ、ハードウェア規模が小さくなり、消費電力を低減することが可能となる。
また、ハードウェアの実行速度を向上させることができ、アクセススピードの低下を防止することができる。
さらに、汎用的なメモリセルを使用することができるため、拡張性を確保できると共に、製造コストの増大を防止することが可能となる。
特開平3−137722号公報
特開昭63−6645号公報
また、ハードウェアの実行速度を向上させることができ、アクセススピードの低下を防止することができる。
さらに、汎用的なメモリセルを使用することができるため、拡張性を確保できると共に、製造コストの増大を防止することが可能となる。
しかしながら、即値指定を用いてアドレスの指定を行う場合、データ長が限られている命令コード内にインデックス値を含めることとなる。
そのため、インデックス値として大きなビット数を割り当てることが困難であり、指定できるメモリのアドレス範囲が限られるという問題があった。特に、2次元メモリの参照アドレスを縦方向に変更する場合、1次元アドレスにおいて大きな値を加算する必要があり、指定できるアドレス範囲が限られることが大きな問題となる。
そのため、インデックス値として大きなビット数を割り当てることが困難であり、指定できるメモリのアドレス範囲が限られるという問題があった。特に、2次元メモリの参照アドレスを縦方向に変更する場合、1次元アドレスにおいて大きな値を加算する必要があり、指定できるアドレス範囲が限られることが大きな問題となる。
このように、2次元メモリのアクセスにおいて、簡単なハードウェア構成によって、柔軟に2次元メモリ上のアドレス修飾を行うことは困難であった。
本発明の課題は、簡単なハードウェア構成によって、柔軟に2次元メモリのアドレス指定を行うことである。
本発明の課題は、簡単なハードウェア構成によって、柔軟に2次元メモリのアドレス指定を行うことである。
以上の課題を解決するため、本発明は、
即値アドレスコード(インデックスレジスタの指定ではなく、インデックス値を直接示すコード)を含む命令コードに基づいて、2次元メモリ上の所定アドレスにアクセスするための2次元メモリアクセス方法であって、前記即値アドレスコードを複数の部分コード(例えば、上位および下位)に分割し、第1の部分コード(例えば、発明の実施の形態中の“Imm[9:5]”)を用いて、前記2次元メモリの縦方向のアドレスを指定し、第2の部分コード(例えば、発明の実施の形態中の“Imm[4:0]”)を用いて、前記2次元メモリの横方向のアドレスを指定する2次元アクセスを行うことを特徴としている。
即値アドレスコード(インデックスレジスタの指定ではなく、インデックス値を直接示すコード)を含む命令コードに基づいて、2次元メモリ上の所定アドレスにアクセスするための2次元メモリアクセス方法であって、前記即値アドレスコードを複数の部分コード(例えば、上位および下位)に分割し、第1の部分コード(例えば、発明の実施の形態中の“Imm[9:5]”)を用いて、前記2次元メモリの縦方向のアドレスを指定し、第2の部分コード(例えば、発明の実施の形態中の“Imm[4:0]”)を用いて、前記2次元メモリの横方向のアドレスを指定する2次元アクセスを行うことを特徴としている。
また、前記即値アドレスコードを1次元アドレスとして解釈し、前記2次元メモリへのアクセスを行うリニアアクセスと、前記2次元アクセスとを切り替えることを特徴としている。
即ち、2次元アクセス方式とリニアアクセス方式とが切り替え可能である。
また、前記命令コードには、前記2次元メモリにおいて参照基準となるアドレス(ベースアドレス)を指定するベースセレクトコード(例えば、図1の“Base-sel”)が含まれ、該ベースセレクトコードによって指定されたアドレスに基づいて、前記リニアアクセスと、前記2次元アクセスとを切り替えることを特徴としている。
即ち、2次元アクセス方式とリニアアクセス方式とが切り替え可能である。
また、前記命令コードには、前記2次元メモリにおいて参照基準となるアドレス(ベースアドレス)を指定するベースセレクトコード(例えば、図1の“Base-sel”)が含まれ、該ベースセレクトコードによって指定されたアドレスに基づいて、前記リニアアクセスと、前記2次元アクセスとを切り替えることを特徴としている。
また、本発明は、
即値アドレスコードを含む命令コードに基づいて、2次元メモリ上の所定アドレスにアクセスする演算処理装置であって、前記即値アドレスコードを複数の部分コードに分割し、第1の部分コードを用いて、前記2次元メモリの縦方向のアドレスを指定し、第2の部分コードを用いて、前記2次元メモリの横方向のアドレスを指定する2次元アクセスを行うメモリアクセス手段(例えば、図1のロード/ストア部40)を備えることを特徴としている。
即値アドレスコードを含む命令コードに基づいて、2次元メモリ上の所定アドレスにアクセスする演算処理装置であって、前記即値アドレスコードを複数の部分コードに分割し、第1の部分コードを用いて、前記2次元メモリの縦方向のアドレスを指定し、第2の部分コードを用いて、前記2次元メモリの横方向のアドレスを指定する2次元アクセスを行うメモリアクセス手段(例えば、図1のロード/ストア部40)を備えることを特徴としている。
また、前記命令コードには、前記2次元メモリにおいて参照基準となるアドレスを指定するベースセレクトコードが含まれ、前記メモリアクセス手段は、前記第1の部分コードおよび第2の部分コードの一方から、他方の部分コードの符号ビット列を減算し、その減算結果を上位側に、前記他方の部分コードを下位側に含めて、前記2次元メモリの縦方向あるいは横方向のサイズに応じた所定サイズのインデックスコードとする減算手段と、前記ベースセレクトコードによって指定されるアドレスと、前記減算手段によって出力されたインデックスコードとを加算して前記2次元メモリ上の参照先アドレスとする加算手段とをさらに備えることを特徴としている。
即ち、2次元アクセスにおけるインデックスコードを算出する際に、乗算を行うことなく、減算手段によって所定ビット分の減算処理を行えばよいため、回路規模の縮小、処理速度の向上および消費電力の低減を図ることができる。
前記ベースセレクトコードによって指定されるアドレスに基づいて、前記即値アドレスコードと、前記減算手段によって出力されたインデックスコードとのいずれかを選択して、前記加算手段に出力する選択手段(例えば、図1の比較器42およびマルチプレクサ43)をさらに備え、前記ベースセレクトコードによって指定されるアドレスと、前記加算手段は、前記選択手段によって出力されたコードとを加算して前記2次元メモリ上の参照先アドレスとすることを特徴としている。
前記ベースセレクトコードによって指定されるアドレスに基づいて、前記即値アドレスコードと、前記減算手段によって出力されたインデックスコードとのいずれかを選択して、前記加算手段に出力する選択手段(例えば、図1の比較器42およびマルチプレクサ43)をさらに備え、前記ベースセレクトコードによって指定されるアドレスと、前記加算手段は、前記選択手段によって出力されたコードとを加算して前記2次元メモリ上の参照先アドレスとすることを特徴としている。
本発明によれば、命令コードに含まれる即値アドレスコードを上位および下位等の複数部分に分割し、そのうちの1つの部分を縦方向のアドレス指定に、他の部分を横方向のアドレス指定に用いることにより、2次元メモリの参照先アドレスを指定することが可能である。
したがって、命令コード内の限られたビット数によって、縦方向および横方向の柔軟な2次元アドレス指定を行うことが可能となる。
したがって、命令コード内の限られたビット数によって、縦方向および横方向の柔軟な2次元アドレス指定を行うことが可能となる。
また、大規模な回路構成となる乗算等を行うことなく、より簡単な構成となる減算によって、2次元メモリアクセスのためのアドレス値を算出することが可能である。
そのため、回路規模が小さくなると共に、処理の高速化が実現され、消費電力を低減することが可能となる。
即ち、本発明によれば、簡単なハードウェア構成によって、柔軟に2次元メモリのアドレス指定を行うことが可能となる。
そのため、回路規模が小さくなると共に、処理の高速化が実現され、消費電力を低減することが可能となる。
即ち、本発明によれば、簡単なハードウェア構成によって、柔軟に2次元メモリのアドレス指定を行うことが可能となる。
以下、図を参照して本発明に係る演算処理装置の実施の形態を説明する。
まず、構成を説明する。
図1は、本発明を適用した演算処理装置1の構成を示す図である。
図1において、演算処理装置1は、メモリ10と、フェッチ部20と、レジスタファイル30と、ロード/ストア部40とを含んで構成される。なお、図1においては、演算処理装置1を構成する各部のうち、本発明の説明に必要となる一部について図示し、他の部分は図示を省略している。また、以下の説明において、“(データ名)[m:n]”と表記する場合、“データ名”によって表されるデータにおいて、第mビットから第nビットまでの部分を示している。
まず、構成を説明する。
図1は、本発明を適用した演算処理装置1の構成を示す図である。
図1において、演算処理装置1は、メモリ10と、フェッチ部20と、レジスタファイル30と、ロード/ストア部40とを含んで構成される。なお、図1においては、演算処理装置1を構成する各部のうち、本発明の説明に必要となる一部について図示し、他の部分は図示を省略している。また、以下の説明において、“(データ名)[m:n]”と表記する場合、“データ名”によって表されるデータにおいて、第mビットから第nビットまでの部分を示している。
メモリ10は、2次元メモリによって構成され、内部では、各行が連続して連なる1次元的なメモリとしてアドレスが付与されている。なお、ここでは、メモリ10の縦方向および横方向のサイズをそれぞれ256バイトであるものとして説明する。
また、メモリ10は、演算処理装置1に与えられる命令コードおよび演算対象となるデータを記憶している。
また、メモリ10は、演算処理装置1に与えられる命令コードおよび演算対象となるデータを記憶している。
フェッチ部20は、命令バスを介してメモリ10から命令コードをフェッチし、一時的に記憶する。
また、フェッチ部20は、命令コードに含まれるベースアドレスが格納されたレジスタを指定するBase-selコードと、ベースアドレスに対し、メモリ10上のアドレス修飾パターンを示すインデックス値とを分離する。
また、フェッチ部20は、命令コードに含まれるベースアドレスが格納されたレジスタを指定するBase-selコードと、ベースアドレスに対し、メモリ10上のアドレス修飾パターンを示すインデックス値とを分離する。
そして、フェッチ部20は、Base-selコードをレジスタファイル30に出力し、インデックス値をロード/ストア部40に出力する。なお、本実施の形態における命令コードは、いわゆる即値指定によるものであり、インデックス値として、アドレス修飾の方法が直接埋め込まれている。
レジスタファイル30は、スカラーレジスタおよびベクトルレジスタを含んで構成され、メモリ10から読み出されたデータおよび演算結果を一時的に記憶する。
レジスタファイル30は、スカラーレジスタおよびベクトルレジスタを含んで構成され、メモリ10から読み出されたデータおよび演算結果を一時的に記憶する。
また、レジスタファイル30は、フェッチ部20から入力されたBase-selコードに示されるアドレスのレジスタから、ベースアドレスを読み出し、ロード/ストア部40に出力する。
ロード/ストア部40は、フェッチ部20に記憶された命令コードがロード命令である場合に、メモリ10から命令コードあるいはデータを読み出したり、命令コードがストア命令である場合に、メモリ10にデータを書き込んだりする。
ロード/ストア部40は、フェッチ部20に記憶された命令コードがロード命令である場合に、メモリ10から命令コードあるいはデータを読み出したり、命令コードがストア命令である場合に、メモリ10にデータを書き込んだりする。
また、ロード/ストア部40は、レジスタファイル30から入力されるベースアドレスに応じて、入力されたインデックス値を1次元アドレスにおけるアドレス修飾の値として解釈するリニアアクセス方式と、入力されたインデックス値を2次元アドレスにおけるアドレス修飾の値として解釈する2次元アクセス方式とのいずれかを切り替えて処理する。
リニアアクセス方式の場合、ロード/ストア部40は、従来と同様に、ベースアドレスに対し、インデックス値を加算してメモリ10上の参照先アドレスとする。
リニアアクセス方式の場合、ロード/ストア部40は、従来と同様に、ベースアドレスに対し、インデックス値を加算してメモリ10上の参照先アドレスとする。
一方、2次元アクセス方式の場合、ロード/ストア部40は、フェッチ部20から入力される10ビットのインデックス値(Imm[9:0])を、上位5ビット(Imm[9:5])と、下位5ビット(Imm[4:0])とに分割する。そして、ロード/ストア部40は、上位5ビットをメモリ10の縦方向のインデックス値として解釈し、下位5ビットをメモリ10の横方向のインデックス値として解釈する。このとき、上位および下位5ビットの値は、それぞれ符号付きで解釈され、10進数で−16〜15までの値を指定可能である。
そして、ロード/ストア部40は、インデックス値の上位5ビットを256倍(2進数で8ビット左シフト)した値と、下位5ビットの値とを加算し、メモリ10上の参照先アドレスの値(TrgtAdd)を算出する(TrgtAdd=Imm[9:5]×256(10進値)+Imm[4:0])。なお、参照先アドレス(TrgtAdd)は、メモリ10内で付与された1次元アドレスを示している。
このように、インデックス値(Imm[9:0])を上位および下位の5ビットに分割し、上位5ビットを縦方向のアドレスの指定に、下位5ビットを横方向のアドレスの指定に用いることで、アドレス修飾が可能な横方向の範囲が5ビットのアドレス範囲に限られることとなる。しかしながら、アドレス修飾が可能な縦方向の範囲が5ビット(符号ビットを含めると±16行の合計32行)まで拡大されることとなり、メモリ10においてブロック状に分布するデータを参照することが容易となる。
ここで、ロード/ストア部40の構成について、詳細に説明する。
図1において、ロード/ストア部40は、減算器41と、比較器42と、マルチプレクサ43と、加算器44とを含んで構成される。
減算器41は、フェッチ部20から入力された10ビットのインデックス値のうち、上位5ビット(Imm[9:5])を256倍(8ビット左シフト)する。
図1において、ロード/ストア部40は、減算器41と、比較器42と、マルチプレクサ43と、加算器44とを含んで構成される。
減算器41は、フェッチ部20から入力された10ビットのインデックス値のうち、上位5ビット(Imm[9:5])を256倍(8ビット左シフト)する。
また、減算器41は、フェッチ部20から入力された10ビットのインデックス値のうち、下位5ビット(Imm[4:0])を上位8ビット分符号拡張する。
そして、減算器41は、Imm[9:5]を256倍した値(exh[12:0])と、Imm[4:0]を符号拡張した値(exl[12:0])との減算処理を行う。
ここで、符号拡張された値(exl[12:0])の13ビット中、exh[12:0]においてImm[9:5]がシフトされている最上位4ビットと加算される部分は、符号ビット(Imm[4])によって埋められた部分である。即ち、Imm[4:0]の最上位ビット(Imm[4])が“1”である場合、2進数で“11111”(10進数で“−1”)であり、“0”である場合、“2進数で00000”(10進数で“0”)である。
そして、減算器41は、Imm[9:5]を256倍した値(exh[12:0])と、Imm[4:0]を符号拡張した値(exl[12:0])との減算処理を行う。
ここで、符号拡張された値(exl[12:0])の13ビット中、exh[12:0]においてImm[9:5]がシフトされている最上位4ビットと加算される部分は、符号ビット(Imm[4])によって埋められた部分である。即ち、Imm[4:0]の最上位ビット(Imm[4])が“1”である場合、2進数で“11111”(10進数で“−1”)であり、“0”である場合、“2進数で00000”(10進数で“0”)である。
したがって、Imm[4]が“1”である場合、exh[12:8]の最上位5ビット分それぞれについて、“−1”の減算を行えば足りることとなる。
そこで、減算器41は、その減算結果である5ビット(ImC[12:8])を、Imm[4:0]を符号拡張した値(exl[12:0])の上位5ビットと置換する。
その結果得られる値(ImC[12:0])は、命令コード中に示された2次元アドレスが、メモリ10内で付与された一次元アドレスに変換されたものとなっている。
そこで、減算器41は、その減算結果である5ビット(ImC[12:8])を、Imm[4:0]を符号拡張した値(exl[12:0])の上位5ビットと置換する。
その結果得られる値(ImC[12:0])は、命令コード中に示された2次元アドレスが、メモリ10内で付与された一次元アドレスに変換されたものとなっている。
比較器42は、レジスタファイル30から入力されるベースアドレスの最上位ビットの値が“0”あるいは“1”のいずれであるかに応じて、マルチプレクサ43に、Imm[9:0]およびImC[12:0]の2つの入力信号のいずれかを選択させるための選択信号を出力する。
即ち、ベースアドレスの値は、32ビットのデータとして構成されており、縦横それぞれ8ビットのアドレスを指定するために、下位16ビットが使用されている。したがって、上位16ビットは、アドレスの指定に用いられていないことから、ベースアドレスにおける最上位の1ビットを使用して、命令コード中のインデックス値を減算器41によって2次元メモリアクセス用に変換するか否かを切り替えるものとする。具体的には、ベースアドレスの最上位ビットが“1”である場合、インデックス値を2次元メモリアクセス用に変換するためにImm[9:0]が選択され、ベースアドレスの最上位ビットが“0”である場合、命令コード中のインデックス値をそのまま使用してアドレス修飾を行うためにImC[12:0]が選択される。
即ち、ベースアドレスの値は、32ビットのデータとして構成されており、縦横それぞれ8ビットのアドレスを指定するために、下位16ビットが使用されている。したがって、上位16ビットは、アドレスの指定に用いられていないことから、ベースアドレスにおける最上位の1ビットを使用して、命令コード中のインデックス値を減算器41によって2次元メモリアクセス用に変換するか否かを切り替えるものとする。具体的には、ベースアドレスの最上位ビットが“1”である場合、インデックス値を2次元メモリアクセス用に変換するためにImm[9:0]が選択され、ベースアドレスの最上位ビットが“0”である場合、命令コード中のインデックス値をそのまま使用してアドレス修飾を行うためにImC[12:0]が選択される。
なお、ベースアドレスの最上位1ビットによって2次元メモリアクセス用にインデックス値を変換するか否かを切り替える場合の他、ベースアドレス中に、2次元メモリアクセス用にインデックス値を変換するか否かを示すビットパターンを含めておき、そのビットパターンを比較器42が判定することによって、切り替えを行うこととしてもよい。
マルチプレクサ43は、フェッチ部20からImm[9:0]が入力されると共に、減算器41からImC[12:0]が入力される。
マルチプレクサ43は、フェッチ部20からImm[9:0]が入力されると共に、減算器41からImC[12:0]が入力される。
そして、マルチプレクサ43は、比較器42から入力される選択信号に基づいて、入力されたImm[9:0]およびImC[12:0]のいずれかを選択して加算器44に出力する。
加算器44は、レジスタファイル30から入力されるベースアドレスの値と、マルチプレクサ43から入力される値とを加算し、メモリ10上の参照先アドレスの値として、アドレスバスに出力する。
加算器44は、レジスタファイル30から入力されるベースアドレスの値と、マルチプレクサ43から入力される値とを加算し、メモリ10上の参照先アドレスの値として、アドレスバスに出力する。
次に、図1を参照して、演算処理装置1の動作を説明する。
図1において、初めに、命令バスを介して、フェッチ部20に命令コードが入力される。
すると、フェッチ部20は、命令コードのBase-selコードと、インデックス値(Imm[9:0])とを分離し、Base-selコードをレジスタファイル30に、インデックス値(Imm[9:0])をロード/ストア部40に出力する。
図1において、初めに、命令バスを介して、フェッチ部20に命令コードが入力される。
すると、フェッチ部20は、命令コードのBase-selコードと、インデックス値(Imm[9:0])とを分離し、Base-selコードをレジスタファイル30に、インデックス値(Imm[9:0])をロード/ストア部40に出力する。
Imm[9:0]が入力されたロード/ストア部40は、Imm[9:0]をそのままマルチプレクサ43に入力すると共に、減算器41によって2次元メモリアクセス用のアドレス(ImC[12:0])に変換してマルチプレクサ43に入力する。
一方、Base-selコードが入力されたレジスタファイル30は、Base-selコードに示されるアドレスのレジスタからベースアドレスを読み出し、比較器42および加算器44に出力する。
一方、Base-selコードが入力されたレジスタファイル30は、Base-selコードに示されるアドレスのレジスタからベースアドレスを読み出し、比較器42および加算器44に出力する。
そして、比較器42は、ベースアドレスの最上位ビットが“1”あるいは“0”のいずれであるかに応じた選択信号をマルチプレクサ43に出力する。
マルチプレクサ43は、比較器42から入力される選択信号に応じて、Imm[9:0]およびImC[12:0]のいずれかを選択して加算器44に出力する。
すると、加算器44は、ベースアドレスと、マルチプレクサ43から入力された値(ベースアドレスに対する相対アドレス値)を加算してメモリ10上の参照先アドレスを算出し、アドレスバスを介してメモリ10に出力する。
マルチプレクサ43は、比較器42から入力される選択信号に応じて、Imm[9:0]およびImC[12:0]のいずれかを選択して加算器44に出力する。
すると、加算器44は、ベースアドレスと、マルチプレクサ43から入力された値(ベースアドレスに対する相対アドレス値)を加算してメモリ10上の参照先アドレスを算出し、アドレスバスを介してメモリ10に出力する。
このように命令コード中のインデックス値を2次元メモリアクセス用に変換した結果、縦方向に参照アドレスを変更する際に、特に有用なものとなる。
図2は、メモリ10において、参照先アドレスが変更される状態を示す図である。
図2においては、まず、メモリ10における第1行第1列(左上)から下方向に1行ずつ参照先アドレスが変更される。このとき、2次元メモリアクセス用にインデックス値を変換する場合、縦方向のインデックス値において、“1”ずつインクリメントすれば足りることとなる。
図2は、メモリ10において、参照先アドレスが変更される状態を示す図である。
図2においては、まず、メモリ10における第1行第1列(左上)から下方向に1行ずつ参照先アドレスが変更される。このとき、2次元メモリアクセス用にインデックス値を変換する場合、縦方向のインデックス値において、“1”ずつインクリメントすれば足りることとなる。
一方、1次元アドレスとして同様の処理を行う場合、アドレスを10進数で“256”加算(2進数で8ビット加算)することとなる。
続いて、図2において、メモリ10の第1列第7列のアドレスから第1行第2列(右の行の最上部)に参照先アドレスがジャンプする。このとき、2次元メモリアクセス用にインデックス値を変換する場合、縦方向のインデックス値において“−7”、横方向のインデックス値において“+1”の加減算を行えば足りることとなる。即ち、例えば、8×8のアドレス範囲における参照先の変化であれば、縦横それぞれの方向について、符号ビットを含めて4ビットずつ、合計8ビットで参照先アドレスの指定を行うことが可能である。
続いて、図2において、メモリ10の第1列第7列のアドレスから第1行第2列(右の行の最上部)に参照先アドレスがジャンプする。このとき、2次元メモリアクセス用にインデックス値を変換する場合、縦方向のインデックス値において“−7”、横方向のインデックス値において“+1”の加減算を行えば足りることとなる。即ち、例えば、8×8のアドレス範囲における参照先の変化であれば、縦横それぞれの方向について、符号ビットを含めて4ビットずつ、合計8ビットで参照先アドレスの指定を行うことが可能である。
一方、1次元アドレスとして同様の処理を行う場合、アドレスを10進数で256×8行=2046だけ減算する必要がある。即ち、符号ビットを含めて、2進数で12ビットの加減算を行う必要がある。
以上のように、本実施の形態に係る演算処理装置1は、命令コードに含まれるインデックス値を上位および下位の5ビットに分割し、上位5ビットを縦方向のインデックス値として、下位5ビットを横方向のインデックス値として解釈することにより、メモリ10の参照先アドレスを指定することが可能である。
以上のように、本実施の形態に係る演算処理装置1は、命令コードに含まれるインデックス値を上位および下位の5ビットに分割し、上位5ビットを縦方向のインデックス値として、下位5ビットを横方向のインデックス値として解釈することにより、メモリ10の参照先アドレスを指定することが可能である。
したがって、命令コード内の限られたビット数によって、縦方向および横方向の柔軟な2次元アドレス指定を行うことが可能となる。
また、そのためのハードウェア構成として、乗算器等の大規模な回路構成となるユニットを備えることなく、より簡単な構成を有する減算器41によって、2次元メモリアクセスのためのアドレス修飾の値を算出することが可能である。
また、そのためのハードウェア構成として、乗算器等の大規模な回路構成となるユニットを備えることなく、より簡単な構成を有する減算器41によって、2次元メモリアクセスのためのアドレス修飾の値を算出することが可能である。
したがって、回路規模が小さくなると共に、処理の高速化が実現され、消費電力を低減することが可能となる。また、乗算処理等の複雑な処理を行わないことから、マルチプレクサ43に入力されるデータにおいて大きな遅延が発生することを防止することができる。
さらに、本実施の形態に係る演算処理装置1は、ベースアドレスの値に基づいて、リニアアクセス方式による処理(インデックス値を1次元アドレスとして解釈する処理)と、2次元アクセス方式による処理(インデックス値を分割し、縦横のインデックス値としてそれぞれ解釈する処理)とを切り替えることが可能である。
さらに、本実施の形態に係る演算処理装置1は、ベースアドレスの値に基づいて、リニアアクセス方式による処理(インデックス値を1次元アドレスとして解釈する処理)と、2次元アクセス方式による処理(インデックス値を分割し、縦横のインデックス値としてそれぞれ解釈する処理)とを切り替えることが可能である。
したがって、2次元アクセスを行うための専用のアドレスバスを備えることなく、メモリ10の実アドレス空間を、2つのアクセス方式に応じて使い分けることが可能となる。
例えば、メモリ10の実アドレス空間を2つの領域に分割し、一方の領域にプログラムを、他方の領域にデータを記憶しておく。一般に、プログラムが記憶されたアドレスにアクセスする場合、リニアアクセスで足り、データが記憶されたアドレスにアクセスする場合、2次元アクセスが必要となることが多い。
例えば、メモリ10の実アドレス空間を2つの領域に分割し、一方の領域にプログラムを、他方の領域にデータを記憶しておく。一般に、プログラムが記憶されたアドレスにアクセスする場合、リニアアクセスで足り、データが記憶されたアドレスにアクセスする場合、2次元アクセスが必要となることが多い。
そのため、ベースアドレスがいずれの領域を指定しているかに応じて、プログラムの領域を指定していればリニアアクセスを行い、データの領域を指定していれば2次元アクセスを行うといったことが可能である。
さらに、メモリ10から2次元アクセスによって読み出したデータを、メモリ10の所定領域にリニアアクセスによって記憶するといったことも可能となる。
さらに、メモリ10から2次元アクセスによって読み出したデータを、メモリ10の所定領域にリニアアクセスによって記憶するといったことも可能となる。
1 演算処理装置,10 メモリ,20 フェッチ部,30 レジスタファイル,40 ロード/ストア部,41 減算器,42 比較器,43 マルチプレクサ,44 加算器
Claims (6)
- 即値アドレスコードを含む命令コードに基づいて、2次元メモリ上の所定アドレスにアクセスするための2次元メモリアクセス方法であって、
前記即値アドレスコードを複数の部分コードに分割し、第1の部分コードを用いて、前記2次元メモリの縦方向のアドレスを指定し、第2の部分コードを用いて、前記2次元メモリの横方向のアドレスを指定する2次元アクセスを行うことを特徴とする2次元メモリアクセス方法。 - 前記即値アドレスコードを1次元アドレスとして解釈し、前記2次元メモリへのアクセスを行うリニアアクセスと、前記2次元アクセスとを切り替えることを特徴とする請求項1記載の2次元メモリアクセス方法。
- 前記命令コードには、前記2次元メモリにおいて参照基準となるアドレスを指定するベースセレクトコードが含まれ、該ベースセレクトコードによって指定されたアドレスに基づいて、前記リニアアクセスと、前記2次元アクセスとを切り替えることを特徴とする請求項2記載の2次元メモリアクセス方法。
- 即値アドレスコードを含む命令コードに基づいて、2次元メモリ上の所定アドレスにアクセスする演算処理装置であって、
前記即値アドレスコードを複数の部分コードに分割し、第1の部分コードを用いて、前記2次元メモリの縦方向のアドレスを指定し、第2の部分コードを用いて、前記2次元メモリの横方向のアドレスを指定する2次元アクセスを行うメモリアクセス手段を備えることを特徴とする演算処理装置。 - 前記命令コードには、前記2次元メモリにおいて参照基準となるアドレスを指定するベースセレクトコードが含まれ、
前記メモリアクセス手段は、
前記第1の部分コードおよび第2の部分コードの一方から、他方の部分コードの符号ビット列を減算し、その減算結果を上位側に、前記他方の部分コードを下位側に含めて、前記2次元メモリの縦方向あるいは横方向のサイズに応じた所定サイズのインデックスコードとする減算手段と、
前記ベースセレクトコードによって指定されるアドレスと、前記減算手段によって出力されたインデックスコードとを加算して前記2次元メモリ上の参照先アドレスとする加算手段と、
をさらに備えることを特徴とする請求項4記載の演算処理装置。 - 前記ベースセレクトコードによって指定されるアドレスに基づいて、前記即値アドレスコードと、前記減算手段によって出力されたインデックスコードとのいずれかを選択して、前記加算手段に出力する選択手段をさらに備え、
前記ベースセレクトコードによって指定されるアドレスと、前記加算手段は、
前記選択手段によって出力されたコードとを加算して前記2次元メモリ上の参照先アドレスとすることを特徴とする請求項5記載の演算処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003287730A JP2005056238A (ja) | 2003-08-06 | 2003-08-06 | 2次元メモリアクセス方法および演算処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003287730A JP2005056238A (ja) | 2003-08-06 | 2003-08-06 | 2次元メモリアクセス方法および演算処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005056238A true JP2005056238A (ja) | 2005-03-03 |
Family
ID=34366629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003287730A Withdrawn JP2005056238A (ja) | 2003-08-06 | 2003-08-06 | 2次元メモリアクセス方法および演算処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005056238A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010108084A (ja) * | 2008-10-28 | 2010-05-13 | Toshiba Corp | 画像処理装置 |
-
2003
- 2003-08-06 JP JP2003287730A patent/JP2005056238A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010108084A (ja) * | 2008-10-28 | 2010-05-13 | Toshiba Corp | 画像処理装置 |
US8345113B2 (en) | 2008-10-28 | 2013-01-01 | Kabushiki Kaisha Toshiba | Image processing apparatus and image processing system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100958964B1 (ko) | 단일 명령어 다중 데이터 실행 엔진 플래그 레지스터용평가 유닛 | |
JPH1011352A (ja) | データ処理装置およびそのレジスタアドレス変換方法 | |
JPH1049369A (ja) | データ処理装置 | |
KR20040086529A (ko) | 벡터 데이터의 어드레스 참조 방법 및 벡터 프로세서 | |
JP2005056238A (ja) | 2次元メモリアクセス方法および演算処理装置 | |
JP2002229778A (ja) | 高速ディスプレースメント付きpc相対分岐方式 | |
JP4984438B2 (ja) | メモリ試験装置及びメモリ試験方法 | |
JP2009536392A (ja) | プログラマブルデータ処理回路 | |
JP4896839B2 (ja) | マイクロプロセッサおよびデータ処理方法 | |
JP3867804B2 (ja) | 集積回路装置 | |
JP5757320B2 (ja) | データ処理装置、データ処理方法およびデータ処理プログラム | |
JP2006344238A (ja) | 並列プロセッサ及びそれを用いた画像処理装置 | |
JP2004302647A (ja) | ベクトルプロセッサおよびレジスタのアドレス指定方法 | |
JP2007080186A (ja) | データ処理装置、及びその制御方法 | |
JP2833327B2 (ja) | アドレス発生方法およびアドレス発生回路 | |
KR100190019B1 (ko) | 그래픽 콘트롤러의 어드레스 계산기 | |
JP3139384B2 (ja) | 画像処理装置 | |
JP4203480B2 (ja) | 画像処理プロセッサ | |
JP2002171412A (ja) | X分木命令を備えるsimd型情報処理装置 | |
US9392143B1 (en) | High performance memory system for 3D color correction | |
JPH09305398A (ja) | 演算処理装置および命令変換装置 | |
JP2766803B2 (ja) | 変換回路 | |
JP3333227B2 (ja) | デジタル映像信号処理装置 | |
JP2007200360A (ja) | アドレスデータ生成装置及びメモリアドレッシング方法 | |
JP2008299704A (ja) | アドレス変換回路、ベクトル処理装置、ベクトル処理システム、および、アドレス変換方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20061107 |