JP4708387B2 - アドレスデータ生成装置及びメモリアドレッシング方法 - Google Patents

アドレスデータ生成装置及びメモリアドレッシング方法 Download PDF

Info

Publication number
JP4708387B2
JP4708387B2 JP2007122356A JP2007122356A JP4708387B2 JP 4708387 B2 JP4708387 B2 JP 4708387B2 JP 2007122356 A JP2007122356 A JP 2007122356A JP 2007122356 A JP2007122356 A JP 2007122356A JP 4708387 B2 JP4708387 B2 JP 4708387B2
Authority
JP
Japan
Prior art keywords
register
value
address
data
addressing
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 - Fee Related
Application number
JP2007122356A
Other languages
English (en)
Other versions
JP2007200360A (ja
Inventor
貴雄 片山
慎一 山浦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2007122356A priority Critical patent/JP4708387B2/ja
Publication of JP2007200360A publication Critical patent/JP2007200360A/ja
Application granted granted Critical
Publication of JP4708387B2 publication Critical patent/JP4708387B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、メモリのモジュロアドレッシングを高速に行うための演算器に関する。
デジタル複写機やファクシミリ装置等の画像処理では、画素数の増加、画像処理の多様化などにより、データの高速処理が求められている。画像処理などにはDSP(Digital Signal Processor)や、SIMD(Single Instruction−stream Multiple Data−stream)方式のプロセッサが用いられることが多いが、いずれも大量のデータを高速に処理するための工夫を必要とする。
例えば、SIMD方式のプロセッサは、算術論理演算器とレジスタファイルを備えたプロセッサエレメント(以下、PEと言う。)(図1、図2参照)と呼ばれるブロックを複数個装備する。それら複数個のPEにより、複数のデータを一度に(同時)処理する。PEにはプロセッサの外部ポートよりデータが順次レジスタファイルに取り込まれ、PE内で処理された後、レジスタファイルに書き込まれ、外部ポートよりプロセッサ外にデータが出力される。このような処理を例えばデジタル複写機に当てはめてみると、プロセッサの外部からスキャナ(CCD)でデータを取り込み、プロセッサ内でデータを加工し、プリンタにデータを送り印刷する、ということになる。
SIMD方式のプロセッサではデータを処理するにあたり、複数のデータをPE内に保持しておく必要があることが想定される。このような場合に、データを一時貯めておけるメモリが各PEに備わり、且つレジスタファイルから該メモリにリード・ライト(読み書き)できるような構成が設定されていれば、効率良くデータの処理を行うことができる。本明細書では、そのようなメモリを「ラインバッファ」と称する。
ところで、このラインバッファを備えるプロセッサでは、ラインバッファとレジスタファイルとのデータの入出力を高速に行えるか否かが、プロセッサのデータ処理能力に大きく関わる。そのようなデータ入出力を高速に行なうためには、ラインバッファに対するアドレッシングが効率良く行なわれなければならない。ところが、アドレッシングを効率良く行うには、通常、アドレス計算を高速に行うための回路が別途必要である。また、レジスタを組み合わせての複雑なアドレッシングを行うという方策も想定され得る。いずれにしても、コストや処理の複雑さにおいて、問題点を含んでいる。
上記以外の方策として、複数のレジスタを用意し、加算器を複数段設け、その上で、オフセットとなるレジスタにモジュロ値を加算すると言ったモジュロアドレッシングを行う、というものも挙げられる。けれども、やはり、加算器を複数段設けることは高速処理に影響する。
ここで、一般的なプロセッサにおいても、モジュロアドレッシングは重要である。近年、画像データや音声データなどの大容量のデータを処理するために、DSPやRISCプロセッサが利用されている。こういったプロセッサの中にもモジュロアドレッシングを含むものは多い。
なお、本願発明に類似する発明の文献として、以下のようなものがある。
特開2000−122919号公報 特開平10−232821号公報 特開平08−297605号公報
本発明は、プロセッサにおいてモジュロアドレッシングを高速に行うことを目的とする。
本発明は、上記の目的を達成するために為されたものである。本発明に係る請求項1に記載のメモリアドレッシング方法は、
メモリへのアクセスを行う際のアドレスをカレントポインタレジスタに格納し、
命令が実行されるときのアドレスとして、上記カレントポインタレジスタを実効アドレスとするメモリアドレッシング方法であって
命令実行後に、実効アドレスの値が、別途設置されたハイポインタレジスタの値以上の場合、実効アドレスの値から、上記カレントポインタレジスタ並びに上記ハイポインタレジスタとは別途に設置されたレングスレジスタの値を減算して算出された値をカレントポインタレジスタに格納するステップと
命令実行後に、実効アドレスの値が、上記ハイポインタレジスタの値未満の場合、実効アドレスの値に別途設けられたインデクスレジスタの値を加算して算出された値をカレントポインタレジスタに格納するステップと
を有するメモリアドレッシング方法である。
本発明に係る第2の形態のメモリアドレッシング方法は、
メモリへのアクセスを行う際のアドレスをカレントポインタレジスタに格納し、
命令が実行されるときのアドレスとして、上記カレントポインタレジスタを実効アドレスとし、
命令実行後に、実効アドレスの値に1を加算した値が、別途設置されたハイポインタレジスタの値と別途設置されたインデクスレジスタの値とを加算した値に一致した場合は、ハイポインタレジスタの値から別途設置されたレングスレジスタの値を減算して算出された値をカレントポインタレジスタに格納し、
一致しなかった場合は実効アドレスに1を加算して算出された値をカレントポインタレジスタに格納する、
メモリアドレッシング方法である。
本発明に係る第3の形態のアドレスデータ生成装置は、
カレントポインタレジスタの値からハイポインタレジスタの値を減算する第1の減算器と、
カレントポインタレジスタの値とインデクスレジスタの値とを加算する第2の加算器と、
カレントポインタレジスタの値からレングスレジスタの値を減算する第3の減算器と、
第1の減算器のキャリー出力をセレクト信号として、第2の加算器の出力値と第3の減算器の出力値との、いずれかを選択する第1のマルチプレクサと
から構成される、
請求項1に記載のメモリアドレッシング方法を行う、アドレスデータ生成装置である。
本発明に係る第4の形態のアドレスデータ生成装置は、
カレントポインタレジスタの値に1を加算する第4の加算器と、
インデクスレジスタの値とハイポインタレジスタの値とを加算する第5の加算器と、
ハイポインタレジスタの値からレングスレジスタの値を減算する第6の減算器と、
第4の加算器の出力値と第5の加算器の出力値とを比較する第1のコンパレータと、
第1のコンパレータからの比較結果信号をセレクト信号として、第4の加算器の出力値と第6の減算器の出力値との、いずれかを選択する第2のマルチプレクサと
から構成される、
上記第2の形態のメモリアドレッシング方法を行う、アドレスデータ生成装置である。
本発明に係る第5の形態のアドレスデータ生成装置は、
−1とハイポインタレジスタとの値のいずれかを選択する第3のマルチプレクサと、
カレントポインタレジスタの値とハイポインタレジスタの値とのいずれかを選択する第4のマルチプレクサと、
カレントポインタレジスタの値から上記第3のマルチプレクサの出力値を減算する第7の減算器と、
インデクスレジスタの値と上記第4のマルチプレクサの値とを加算する第8の加算器と、
上記第4のマルチプレクサの出力値からレングスレジスタの値を減算する第9の減算器と、
第7の減算器の出力値と第8の加算器の出力値とを比較する第2のコンパレータと、
第7の減算器のキャリーと、第2のコンパレータからの比較結果信号とを、セレクト信号として、第7の減算器の出力値と第8の加算器の出力値と第9の減算器の出力値との、いずれかを選択する第5のマルチプレクサと
から構成される、
上記第1の形態又は上記第2の形態のメモリアドレッシング方法を行う、アドレスデータ生成装置である。
本発明を利用することで、以下のような効果を奏することが可能である。
本発明に係る請求項1若しくは第2の形態のアドレッシング方法、又は第3の形態若しくは第4の形態のアドレスデータ生成装置を利用することにより、レジスタを最初に設定するだけで、配列領域のデータアクセスを簡易に行うことができる。
従来技術であれば、モジュロアドレッシングにおいては、アドレス計算を行い、更に終端であるかのチェックを行うため、アドレスが決定するまで時間を要する。本発明では、アドレス計算は前命令で完了していることと、演算器(加算器、減算器)を並行して配置しているため、レジスタからの出力は実質1段の演算器(加算器、減算器)を通過するのみであることとから、高速の処理が可能となっている。
本発明に係る第5の形態のアドレスデータ生成装置は、第3の形態のアドレスデータ生成装置と、第4の形態のアドレスデータ生成装置とを、いずれも含む構成を備える。即ち、指定されるアドレッシングにより、2つのマルチプレクサを制御し、演算器(加算器、減算器)の入力を変え、3種類の出力を3対1のマルチプレクサで選択する。このことで、2つのアドレッシングを1つの回路で行っており、回路構成が少なくなっている。
SIMD型マイクロプロセッサでのデータ処理では、配列形式の処理が多用される。SIMD型マイクロプロセッサはX方向(即ち、主走査方向)のデータを一度に入力するが、例えばX方向のみ平滑化処理をする場合には本発明を利用しなくとも問題は生じ難い。ここで、平滑化処理とは、ある画素データ(注目画素)を中心に、前後左右方向の画素データにマトリクス状の係数をかけあわせ、その和を注目画素データにすること、即ち、注目画素のデジタルデータを周辺のデータでぼかすことである。同様に、Y方向(即ち、副走査方向)に前後のデータを複数のレジスタに設定し演算する場合でも、レジスタの数さえ余っていれば、本発明を利用しなくとも問題は生じ難い。しかし、Y方向に相当多数の画素データが必要になる場合などは、レジスタの数が不足してしまうことは明白である。このとき、本発明、特に、請求項1に係るアドレッシング方法や第3の形態に係るアドレスデータ生成装置を利用することにより、Y方向の相当多数の画素データをPERAMに格納しておき、多数のデータを処理することができる。
第2の形態に係るアドレッシング方法や第4の形態に係るアドレスデータ生成装置を利用する場合にも、複数SIMD間の同一PEの位置にある画素データが、同一PEのPERAMに格納され得ることになるから、非常に広範囲のデータが同一PEにおける処理の対象となり得る。
以下、図面を参照して本発明に係る好適な実施形態について説明する。
図3乃至図5において、本発明に係る第1の実施の形態、第2の実施の形態、及び第3の実施の形態のアドレスデータ生成装置30、30’、30”を示す。いずれも、4つのレジスタと、3つの加算器または減算器とが、基本的に含まれる。それら4つのレジスタは、
(1)メモリ中の指定のエリアにアクセスするためのメモリの先頭アドレスを格納するカレントポインタレジスタ(以下、Cレジスタと言う。)32、
(2)エリアの終了に関連するアドレスを格納するハイポインタレジスタ(以降Hレジスタ)34、
(3)モジュロ値を格納するインデクスレジスタ(以下、Iレジスタと言う。)36、及び、
(4)転送データ数(エリアの大きさ)に関連する値を格納するレングスレジスタ(以下、Lレジスタと言う。)38
である。説明の便宜上、ここでは各レジスタを16ビットのものに限定しているが、メモリサイズにより増減してもよい。また、レジスタの個数も夫々1個を用意しているが、複数個であればレジスタの組み合わせを複数にすることができる。
≪第1の実施の形態≫
図3は、本発明の第1の実施の形態に係るアドレスデータ生成装置30の概略の構成を示すブロック図である。該アドレスデータ生成装置30は、Cレジスタ32の値からHレジスタ34の値を減算する第1の減算器40と、Cレジスタ32の値とIレジスタ36の値を加算する第2の加算器42と、Cレジスタ32の値からLレジスタ38の値を減算する第3の減算器44と、第1の減算器40のキャリー出力をセレクト信号として、第2の加算器42の出力値と第3の減算器44の出力値とのいずれかを選択する第1の2対1マルチプレクサ46とから構成される。
第1の減算器40の演算においてキャリーが生じた場合には、
(Cレジスタの値)≧(Hレジスタの値)
が成立する。このとき第1の2対1マルチプレクサ46では、Cレジスタ32の値からLレジスタ38の値を減算した値、つまり第3の減算器44の出力値を選択するように、制御される。同演算において、キャリーがなかった場合は、
(Cレジスタの値)<(Hレジスタの値)
が成立する。このとき第1の2対1マルチプレクサ46では、Cレジスタ32の値にIレジスタ36の値を加算した値、つまり第2の加算器42の出力値を選択するように、制御される。
≪第2の実施の形態≫
図4は、本発明の第2の実施の形態に係るアドレスデータ生成装置30’の概略の構成を示すブロック図である。該アドレスデータ生成装置30’は、Cレジスタ32の値に“1”を加算する第4の加算器48と、Iレジスタ36の値とHレジスタ34の値とを加算する第5の加算器50と、Hレジスタ34の値からLレジスタ38の値を減算する第6の減算器52と、第4の加算器48の出力値と第5の加算器50の出力値とを比較する第1のコンパレータ54と、第1のコンパレータ54からの比較結果信号をセレクト信号として、第4の加算器48の出力値と第6の減算器52の出力値とのいずれかを選択する第2の2対1マルチプレクサ56とから構成される。
第1のコンパレータ54での比較結果信号は、第4の加算器48の出力値と第5の加算器50の出力値とが全ビットで全く同じ場合、つまり、
(Cレジスタの値+1)=(Hレジスタの値+Iレジスタの値)
が成り立つ場合、Hレジスタ34の値からLレジスタ38の値を減算した値、即ち第6の減算器52の出力値を選択し、第4の加算器48の出力値と第5の加算器50の出力値とが1ビットでも異なっている場合、つまり、
(Cレジスタの値+1)≠(Hレジスタの値+Iレジスタの値)
が成り立つ場合、Cレジスタ32の値に“1”加算した値、即ち第4の加算器48の出力値を選択するように、第2の2対1マルチプレクサ56を制御する。
第4の加算器48においては、代わりに減算器を用いて、“1”を入力するのではなく“−1”を入力するようにしてもよい。
≪第3の実施の形態≫
図5は、本発明の第3の実施の形態に係るアドレスデータ生成装置30”の概略の構成を示すブロック図である。該アドレスデータ生成装置30”は、
・“−1”とHレジスタ34の値とのいずれかを選択する第3の2対1マルチプレクサ58と、
・Cレジスタ32の値とHレジスタ34の値のいずれかを選択する第4の2対1マルチプレクサ60と、
・Cレジスタ32の値から第3の2対1マルチプレクサ58の出力値を減算する第7の減算器62と、
・Iレジスタ36の値と第4の2対1マルチプレクサ60の出力値とを加算する第8の加算器64と、
・第4の2対1マルチプレクサ60の出力値からLレジスタ38の値を減算する第9の減算器66と、
・第7の減算器62の出力値と第8の加算器64の出力値とを比較する第2のコンパレータ68と、
・第2のコンパレータ68の比較結果信号をセレクト信号1(S1)として、更に第7の減算器62のキャリーをセレクト信号2(S2)として、第7の減算器62、第8の加算器64、若しくは第9の減算器66の出力値のいずれかを選択する3対1マルチプレクサ70と
から構成される。
図5において、セレクト信号(セレクト信号1、セレクト信号2)は、直接に3対1マルチプレクサ70に入力されるように図示しているが、実際にはアドレッシングの種類によって、どちらか一方を有効にするように制御される。例えば、アドレッシングが後で説明する「レジスタ・インダイレクト・ウィズ・モディファイ・アドレッシング」(図6参照)である場合は、セレクト信号1のみを使用するように制御され、アドレッシングが後で説明する「レジスタ・インダイレクト・ウィズ・インクリメント・アドレッシング」(図7参照)である場合は、セレクト信号2のみを使用するように制御される。
更に、第3の2対1マルチプレクサ58、及び、第4の2対1マルチプレクサ60に対する選択信号も、上記のアドレッシングによって決定される。
≪第4の実施の形態≫
以下、本発明の第4の実施形態に係るSIMD型マイクロプロセッサ2を説明する。該SIMD型マイクロプロセッサ2は、本発明に係るアドレッシングデータ生成装置30、30’、30”を内部に含み、利用する。
図1のように、上記SIMD型マイクロプロセッサ2は、レジスタファイル8と演算アレイ10とから成るプロセッサエレメント6と呼ばれるブロックを複数持つ。各プロセッサエレメント6は、外部入出力を通してデータをレジスタファイル8に入力・出力する。外部入出力は、例えばデジタル複写機で言えば、スキャナ(CCD)からデータを読み取ったり、SIMD型マイクロプロセッサ2で変倍・フィルタなどの画像処理を施した結果のデータをプリンタなどに送ったりすることである。
SIMD型マイクロプロセッサ2は、複数のプロセッサを保有するが、グローバルプロセッサ4と呼ばれるブロックを少なくとも一つ備える。グローバルプロセッサ4は、RAM(図示せず。)から読み取られたプログラムコードを処理し、グローバルプロセッサ4自身やプロセッサエレメント6に制御信号を送る。
図2は、SIMD型マイクロプロセッサ2において、プロセッサエレメント6をより詳しく表記したもので、例えば、320個のプロセッサエレメント6と1個のグローバルプロセッサ4とから成る。この場合であれは、一度に(同時)処理できるデータ数は、最大320個となる。
以降の説明のため、この一度に(同時)処理できる(320個の)データ数の単位を、“1SIMD”と称することにする。例えば、あるデジタル複写機などで1ラインのデータを読み出した場合そのデータ数が6400個あったような場合、このSIMD型マイクロプロセッサ2では320個のデータを一度に(同時)処理することが可能なため、6400個のデータであれば20SIMDの処理で1ラインのデータが処理可能となる。
各々のプロセッサエレメント4には、1Kbytes(キロバイト)のメモリ(以下、PERAMと言う。)12と、メモリからデータを入出力しかつ外部入出力からデータの入出力を行うことのできるレジスタ(以下、Rレジスタと言う。)14とが、設置されている。ここでRレジスタ14は各PE6毎に、R0〜R31までの32本用意されている。
なお、本発明とは関連がないが、7対1マルチプレクサ16により、各PE6は左右夫々3つ隣のPE6までの、Rレジスタ14のいずれかとデータを入出力でき、更にそのデータはPE6に含まれるALU18の片側の入力となり得る。
その他図2には、Aレジスタ20、Fレジスタ22、Mレジスタ24、Tレジスタ26などが記されているが、いずれも本発明では利用しないため説明を省略する。
図には記していないが、本実施の形態では、例えば、Cレジスタ32として16ビットのレジスタがC0〜C15までの16本、Lレジスタ38として16ビットのレジスタがL0〜L7の8本、Iレジスタ36として16ビットのレジスタがI0〜I3の4本、Hレジスタ34として16ビットのレジスタがH0〜H15までの16本、グローバルプロセッサ4内に用意されている。更に、本発明に係る第1の実施の形態、第2の実施の形態、若しくは第3の実施の形態であるアドレスデータ生成装置30、30’、30”も、グローバルプロセッサ4内に設置されている。これらのいずれのレジスタもメモリのサイズによって決定されるため、16ビットである必要はない。よってメモリのサイズが増えた場合には、レジスタのサイズが増やされてもよい。レジスタの本数も、上記のものに限定されない。
本実施の形態に係るSIMD型マイクロプロセッサ2においては、上記のPERAM12にアクセスする命令(コマンド)として、例えば、次のような2つのものが想定される。
・「STR」命令:ソース・オペランド(のレジスタ)のデータを、デスティネーション・オペランドに指定するメモリアドレッシングにより決定される(メモリの)アドレスにストアする。
・「LDR」命令:ソース・オペランドに指定するメモリアドレッシングにより決定される(メモリの)アドレスに格納されているデータを、デスティネーション・オペランド(のレジスタ)にロードする。
ここで上記のメモリアドレッシング(とその表記)として、次の2つ((1)、(2))が用意されている。
(1)「レジスタ・インダイレクト・ウィズ・モディファイ・アドレッシング」;(表記)[C,I,L]
(2)「レジスタ・インダイレクト・ウィズ・インクリメント・アドレッシング」;(表記)[C,I,L]+
上記(1)、(2)の表記において、C、I、Lは夫々、Cレジスタ32、Iレジスタ36、Lレジスタ38である。上記の表記には、Hレジスタ34が無いが、Hレジスタ34はCレジスタ32と同じ番号のレジスタが選択されるようになっている。例えば、“C0”と表記した場合、自動的に“H0”が選択される。これは命令コード量の削減のためであるので、上記の表記に限定されるものではない。
上記のSTR命令、LDR命令では、メモリアドレッシングのオペランド以外は、Rレジスタ14が対象として使用される。
メモリアドレッシングの[C,I,L]は、第1の実施の形態(若しくは第3の実施の形態)に係るアドレスデータ生成装置30(、30”)を利用する。一方、[C,I,L]+は、第2の実施の形態(若しくは第3の実施の形態)に係るアドレスデータ生成装置30’(、30”)を利用する。
まず、レジスタ・インダイレクト・ウィズ・モディファイ・アドレッシング([C,I,L])を利用して連続してアドレッシングする方法の例を、図6のフローチャートにより示す。
現在実行している命令にPERAM12へのレジスタ・インダイレクト・ウィズ・モディファイ・アドレッシング([C,I,L])がある場合、Cレジスタ32の値をメモリのアドレスとして、命令を実行しメモリのリード(読出し)若しくはライト(書出し)を行う(図6:S02)。
次に、Cレジスタ32の値とHレジスタ34の値とを比較して(図6:S04)、Cレジスタ32の値がHレジスタ34の値以上であれば(図6:S04でYESに分岐)、Cレジスタ32の値からLレジスタ34の値を減算してCレジスタ32に格納する(図6:S06)。Cレジスタ32の値がHレジスタ34の値未満であれば(図6:S04でNOに分岐)、Cレジスタ32の値にIレジスタ36の値を加算しCレジスタ32に格納する(図6:S08)。
続く命令において、PERAM12へのこのメモリアドレッシング([C,I,L])がある場合、上記のS06又はS08にて更新されたCレジスタ32の値をPERAM12のメモリのアドレスとして、メモリのリード若しくはライトを行う(図6:S10)。
即ち、同じレジスタの組み合わせを用いる限り、Cレジスタ32の値は、Hレジスタ34の値以上にならないとき、Iレジスタ36の値ずつ増えていくことになり、Hレジスタ34の値以上になったとき、そのときのCレジスタ32の値からLレジスタ38の値を減算した値がCレジスタ32の値となる。
続いて、レジスタ・インダイレクト・ウィズ・インクリメント・アドレッシング([C,I,L]+)を利用して連続してアドレッシングする方法の例を、図7のフローチャートにより示す。
現在実行している命令にPERAM12へのレジスタ・インダイレクト・ウィズ・インクリメント・アドレッシング([C,I,L]+)がある場合、Cレジスタ32の値をメモリのアドレスとして、命令を実行しメモリのリード(読出し)若しくはライト(書出し)を行う(図7:S22)。
次に、Cレジスタ32の値に“1”を加算した値とHレジスタ34の値にIレジスタ36の値を加算した値とを比較して(図7:S24)、一致すれば(図7:S24でYESに分岐)、Hレジスタ34の値からLレジスタ38の値を減算してCレジスタ32に格納する(図7:S26)。一致しなければ(図7:S24でNOに分岐)、Cレジスタ32の値に“1”を加算しCレジスタ32に格納する(図7:S28)。
続く命令において、PERAM12へのこのメモリアドレッシング([C,I,L]+)がある場合、上記のS26又はS28にて更新されたCレジスタ32の値をPERAM12のメモリのアドレスとして、メモリのリードもしくはライトを行う(図7:S30)。
即ち、同じレジスタの組み合わせを用いる限り、Cレジスタ32の値は、(Hレジスタ34の値+Iレジスタ36の値)と一致しないとき、1ずつ増えていくことになり、(Hレジスタ34の値+Iレジスタ36の値)と一致したとき、そのときのCレジスタ32の値からLレジスタ38の値を減算した値がCレジスタ32の値となる。
≪具体的な利用例について≫
上記の本発明に係るモジュロアドレッシングは、メモリ内のある矩形領域をアクセスするのに適合するアドレッシング方法である。前に説明したように該アドレッシングにおいては、メモリアドレッシングに係る命令を実行する前に、Cレジスタ32には矩形領域の先頭のアドレス、Hレジスタ34にはアクセスする矩形領域の最終アドレスに関連するアドレス、Iレジスタ36にはモジュロ値(矩形領域内で何アドレスおきにアクセスするかの設定値)、Lレジスタ38には矩形領域のデータ数に関連する値を、設定する必要がある。
メモリの矩形領域に配列を割り当てた例を用いて、メモリアドレッシング及びアクセスの例示を、以下に述べる。
図8及び図9には、8×5の配列領域にメモリを置き換えた図を示す。(X,Y)の2次元座標で配列が表わされる。“X”は図8及び図9の横方向、“Y”は縦方向に相当する。Xについては右方向が正方向であり、Yについては下方向が正方向である。配列の1要素はメモリの1つのアドレスに対応する。アドレスは、例えば、100h番地から順に右方向に1hインクリメントし、右端に達すれば、2段目の左端108hから順に同じようにインクリメントする。このとき配列は、(0,0)から順に右方向にX座標が“1”インクリメントし、右端(8,0)に達すれば2段目の左端に進んでX座標が“0”に戻りY座標が“1”インクリメントし、更に2段目の左端(0,1)から順に同じようにインクリメントする。8×5の配列で表されたメモリ空間であるため、最終アドレスは27h加算された値、即ち127hとなる。
なお、本明細書において、例えば、“100h”における“h”は、16進表記であることを示す。
この矩形領域をアクセスする順序の代表的なものとして、2つ挙げられる。1つ目は、図8の点線のように、先ずY方向に順にアクセスする、というものである。この場合、(0,0)−>(0,1)−>(0,2)−>(0,3)−>(0,4)−>(1,0)−>(1,1)−>・・・というように、Y方向の最大まで達すれば、X座標を1加算しY座標を0にして、次の列のアクセスを行う。メモリのアドレスでは、100h−>108h−>110h−>118h−>120h−>101h−>・・・となる。
2つ目は、図9の点線のように、X方向に順にアクセスする、というものである。この場合、(0,0)−>(1,0)−>(2,0)−>(3,0)−>(4,0)−>(5,0)−>(6,0)−>(7,0)−>(0,1)−>・・・というように、X方向の最大まで達すれば、Y座標を1加算しX座標を0にして、次の行のアクセスを行う。メモリのアドレスでは、100h−>101h−>102h−>・・・とメモリのアドレスの増加方向通りとなる。
ここで、当初にて一度だけ各レジスタを設定し、「レジスタ・インダイレクト・ウィズ・モディファイ・アドレッシング」([C,I,L])を命令のオペランドに使用して、繰り返してアクセスに係る命令を実行すれば、図8に示されるメモリ空間の配列において点線で示す順に配列内の全データへのアクセスを為すことができる。本発明に係るレジスタ・インダイレクト・ウィズ・モディファイ・アドレッシングにおいては、1つのアクセス命令の実行後にCレジスタ32の値を変更し、その変更されたCレジスタ32の値を次のアクセス命令実行時に使用し、更に、2種類のアドレス計算と並行して別の加算器(減算器)でY方向の範囲越えのチェックを行い、2種類のアドレス計算の結果の選択をその別の加算器(減算器)の結果に委ねるからである。前に説明したように、このときには、第1の実施の形態(若しくは第3の実施の形態)に係るアドレスデータ生成装置30(、30”)を利用する。
図8の場合、当初に各レジスタに設定される値を示すと、
・Cレジスタ32は配列領域の先頭アドレスで100h、
・Iレジスタ36はX方向の分割数で8h、
・Hレジスタ34は先頭列の最終行のアドレスで120h、
・Lレジスタ38は「X方向の分割数×(Y方向の分割数―1)―1」で「1fh(=8*(5−1)−1)」
となる。(0,0)〜(0,3)のアクセス時には、Cレジスタ32はIレジスタ36の値8hずつ増加していくが、(0,4)のアクセス時(直後)には、Cレジスタ32の値が120hとなる。この値は、Hレジスタ34の値以上であるため、Cレジスタ32の値120hからLレジスタ38の値1fhを減算した結果101hをCレジスタ32に格納することになる。従って、各レジスタ(C、I、H、L)について別途の値設定を行うことなく次の列のアクセスを行うことができる。
ところで、Lレジスタ38の値を、「X方向の分割数×(Y方向の分割数―1)」とすれば、当初のCレジスタ32の値に戻すことができる。この場合に他の列をアクセスすることを考慮するならば、例えば、C0レジスタに最初の列の先頭アドレスを格納し、C1レジスタに2列目の先頭アドレスを格納する、というように、個別の具体的レジスタを特定の列に固定すれば、アクセス実行可能である。このとき、Hレジスタ34もCレジスタ32に合わせて設定する必要があるが、Iレジスタ36、Lレジスタ38は同じものを利用できる。最初の列と最後の列のみ処理したい場合などにも、これらの考え方は利用可能である。
さらに、当初にて一度だけ各レジスタを設定し、「レジスタ・インダイレクト・ウィズ・インクリメント・アドレッシング」([C,I,L]+)を命令のオペランドに使用して、繰り返してアクセスに係る命令を実行すれば、図9に示されるメモリ空間の配列において点線で示す順に配列内の全データへのアクセスを為すことができる。本発明に係るレジスタ・インダイレクト・ウィズ・インクリメント・アドレッシングにおいては、1つのアクセス命令の実行後にCレジスタ32の値を1インクリメントし、配列内の最後の(アドレスの)データをアクセスした後は、Cレジスタ32の値は配列の先頭のアドレスに戻るからである。前に説明したように、このときには、第2の実施の形態(若しくは第3の実施の形態)に係るアドレスデータ生成装置30’(、30”)を利用する。
図9の場合、当初に各レジスタに設定される値を示すと、
・Cレジスタ32は配列領域の先頭アドレスで100h、
・Iレジスタ36はX方向の分割数で8h、
・Hレジスタ34は先頭列の最終行のアドレスで120h、
・Lレジスタ38は「X方向の分割数×(Y方向の分割数―1)」で「20h(=8*(5−1))」となる。(0,0)−>(1,0)−>・・・(7,0)−>(0,1)−>(1,1)−>・・・−>(7,4)とアクセスしていくわけであるが、最終の(7,4)までCレジスタ32の値を“1”ずつインクリメントしていく。そして、(Hレジスタの値“120h”)+(Iレジスタの値“8h”)と、(Cレジスタの値“127h”)+(1h)とが、一致したとき、つまり(7,4)の配列に相当するアドレスをアクセスしたときに、Cレジスタ32の値は、(Hレジスタの値“120h”)―(Lレジスタの値“20h”)=100hとなる。従って、もしアドレス“127h”以降のアドレス空間にも展開される配列領域もアクセスするのであれば、別のCレジスタ32を使用し、そのCレジスタ32に例えば128hを設定しておけばよい。
なお、通常のラインバック処理の場合、以下のように2つのアドレッシングを組み合わせて使用することが多い。例えば、図10のような配列領域があった場合、次の順序でアクセスする。
(0,0)−>(0,1)−>(0,2)−>(0,3)−>(0,4)までの参照(この場合メモリからのリードを行う)を[C,I,L]のアドレッシングで行う。Lレジスタ38の値が予め“20h”に設定されており、そのため(0,4)の次は(0,0)のアドレスがCレジスタ32に設定される。ところで、(0,0)のアドレスのデータは、ラインバッファとして最も古いラインのデータであり不要とされるべきデータであるため、(0,0)に最新のラインのデータが書き込まれる必要がある。そこで、[C,I,L]+のアドレッシングを採用し、メモリに最新ラインのデータを書き込まれると、次に、アクセスされるのは自ずと(1,0)となり(この場合メモリからのリードを行う)、それ以降また同じように[C,I,L]を使用する。このような命令を繰り返すことで、図10の矢印の順のラインバック処理が可能となる。
本発明の第4の実施の形態に係るSIMD型マイクロプロセッサの概略の構成を示すブロック図である。 本発明の第4の実施の形態に係るSIMD型マイクロプロセッサのやや詳細な構成を示すブロック図である。 本発明の第1の実施の形態に係るアドレスデータ生成装置の概略の構成を示すブロック図である。 本発明の第2の実施の形態に係るアドレスデータ生成装置の概略の構成を示すブロック図である。 本発明の第3の実施の形態に係るアドレスデータ生成装置の概略の構成を示すブロック図である。 本発明に係るレジスタ・インダイレクト・ウィズ・モディファイ・アドレッシング([C,I,L])を利用して連続してアドレッシングする方法の例を示すフローチャートである。 本発明に係るレジスタ・インダイレクト・ウィズ・インクリメント・アドレッシング([C,I,L]+)を利用して連続してアドレッシングする方法の例を示すフローチャートである。 本発明に係るレジスタ・インダイレクト・ウィズ・モディファイ・アドレッシング([C,I,L])を利用するデータアクセスの例である。 本発明に係るレジスタ・インダイレクト・ウィズ・インクリメント・アドレッシング([C,I,L]+)を利用するデータアクセスの例である。 本発明に係る2つのアドレッシングを利用するラインバック処理を示す。
符号の説明
2・・・SIMD型マイクロプロセッサ、4・・・グローバルプロセッサ、6・・・プロセッサエレメント、12・・・PERAM、14・・・Rレジスタ、30、30’、30”・・・アドレスデータ生成装置、32・・・Cレジスタ、34・・・Hレジスタ、36・・・Iレジスタ、38・・・Lレジスタ。

Claims (2)

  1. メモリへのアクセスを行う際のアドレスをカレントポインタレジスタに格納し、
    命令が実行されるときのアドレスとして、上記カレントポインタレジスタを実効アドレスとするメモリアドレッシング方法であって
    命令実行後に、実効アドレスの値が、別途設置されたハイポインタレジスタの値以上の場合、実効アドレスの値から、上記カレントポインタレジスタ並びに上記ハイポインタレジスタとは別途に設置されたレングスレジスタの値を減算して算出された値をカレントポインタレジスタに格納するステップと
    命令実行後に、実効アドレスの値が、上記ハイポインタレジスタの値未満の場合、実効アドレスの値に別途設けられたインデクスレジスタの値を加算して算出された値をカレントポインタレジスタに格納するステップと
    を有するメモリアドレッシング方法。
  2. カレントポインタレジスタの値からハイポインタレジスタの値を減算する第1の減算器と、
    カレントポインタレジスタの値とインデクスレジスタの値とを加算する第2の加算器と、
    カレントポインタレジスタの値からレングスレジスタの値を減算する第3の減算器と、
    第1の減算器のキャリー出力をセレクト信号として、第2の加算器の出力値と第3の減算器の出力値との、いずれかを選択する第1のマルチプレクサと
    から構成される、
    請求項1に記載のメモリアドレッシング方法を行う、アドレスデータ生成装置。
JP2007122356A 2007-05-07 2007-05-07 アドレスデータ生成装置及びメモリアドレッシング方法 Expired - Fee Related JP4708387B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007122356A JP4708387B2 (ja) 2007-05-07 2007-05-07 アドレスデータ生成装置及びメモリアドレッシング方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007122356A JP4708387B2 (ja) 2007-05-07 2007-05-07 アドレスデータ生成装置及びメモリアドレッシング方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2002049269A Division JP3970049B2 (ja) 2002-02-26 2002-02-26 アドレスデータ生成装置及びメモリアドレッシング方法

Publications (2)

Publication Number Publication Date
JP2007200360A JP2007200360A (ja) 2007-08-09
JP4708387B2 true JP4708387B2 (ja) 2011-06-22

Family

ID=38454831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007122356A Expired - Fee Related JP4708387B2 (ja) 2007-05-07 2007-05-07 アドレスデータ生成装置及びメモリアドレッシング方法

Country Status (1)

Country Link
JP (1) JP4708387B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5471969B2 (ja) * 2010-08-23 2014-04-16 株式会社リコー Simdプロセッサのためのメモリコントローラ

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002007114A (ja) * 2000-06-23 2002-01-11 Mitsubishi Electric Corp アドレス生成回路

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2675010B2 (ja) * 1986-08-29 1997-11-12 株式会社日立製作所 情報処理装置
US5381360A (en) * 1993-09-27 1995-01-10 Hitachi America, Ltd. Modulo arithmetic addressing circuit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002007114A (ja) * 2000-06-23 2002-01-11 Mitsubishi Electric Corp アドレス生成回路

Also Published As

Publication number Publication date
JP2007200360A (ja) 2007-08-09

Similar Documents

Publication Publication Date Title
US10531030B2 (en) Block operations for an image processor having a two-dimensional execution lane array and a two-dimensional shift register
US10719295B2 (en) Circuit to perform dual input value absolute value and sum operation
GB2553632A (en) Core processes for block operations on an image processor having a two-dimensional execution lane array and a two-dimensional shift register
JP2009223758A (ja) 画像処理装置
JP5633122B2 (ja) プロセッサ及び情報処理システム
JP2005309499A (ja) プロセッサ
JP4708387B2 (ja) アドレスデータ生成装置及びメモリアドレッシング方法
JP2008072585A (ja) 演算処理用データ供給方法および画像処理装置
JP3970049B2 (ja) アドレスデータ生成装置及びメモリアドレッシング方法
JP2007073010A (ja) Simd方式プロセッサ、当該simd方式プロセッサを利用する画像処理方法、及び画像処理装置
JP4442905B2 (ja) 画像データの処理方法
JP4482356B2 (ja) Simdプロセッサを用いた画像処理方法及び画像処理装置
JP4516495B2 (ja) Simd型マイクロプロセッサにおけるデータ処理方法
JP4896839B2 (ja) マイクロプロセッサおよびデータ処理方法
JP4451433B2 (ja) 並列プロセッサ
JP2005086598A (ja) 画像処理装置、画像処理方法、画像処理プログラムおよび画像処理回路
JP3971543B2 (ja) Simd型プロセッサ
JP3969580B2 (ja) データ処理装置、画像処理装置、画像形成装置、プログラム及び記憶媒体
JP4933462B2 (ja) 画像処理方法
JP2010033426A (ja) Simd型マイクロプロセッサおよび演算方法
JPH07210545A (ja) 並列処理プロセッサ
JP2006155637A (ja) 信号処理装置
JP2013161325A (ja) Simd型マイクロプロセッサ、プロセッサシステムおよびsimd型マイクロプロセッサのデータ処理方法
JP4294190B2 (ja) 並列プロセッサ及びそれを用いた画像処理装置
JP5055393B2 (ja) Simd型マイクロプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100713

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100913

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: 20110308

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110316

R150 Certificate of patent or registration of utility model

Ref document number: 4708387

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees