JP2006293663A - メモリアドレス生成装置及びそれを有したプロセッサ、メモリアドレス生成方法 - Google Patents

メモリアドレス生成装置及びそれを有したプロセッサ、メモリアドレス生成方法 Download PDF

Info

Publication number
JP2006293663A
JP2006293663A JP2005113051A JP2005113051A JP2006293663A JP 2006293663 A JP2006293663 A JP 2006293663A JP 2005113051 A JP2005113051 A JP 2005113051A JP 2005113051 A JP2005113051 A JP 2005113051A JP 2006293663 A JP2006293663 A JP 2006293663A
Authority
JP
Japan
Prior art keywords
address
memory
replacement
designated
msb
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
Application number
JP2005113051A
Other languages
English (en)
Inventor
Takashi Kuroda
隆 黒田
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.)
Sanyo Electric Co Ltd
Original Assignee
Sanyo Electric 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 Sanyo Electric Co Ltd filed Critical Sanyo Electric Co Ltd
Priority to JP2005113051A priority Critical patent/JP2006293663A/ja
Priority to CNA2006100732363A priority patent/CN1848097A/zh
Priority to TW095112692A priority patent/TW200636464A/zh
Priority to US11/279,204 priority patent/US7409607B2/en
Priority to KR1020060032275A priority patent/KR100805027B1/ko
Publication of JP2006293663A publication Critical patent/JP2006293663A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter

Abstract

【課題】メモリの記憶容量を効率的に使用する。
【解決手段】メモリが提供するアドレス空間にあって、置換元データが格納される第1の設定領域と、当該置換元データの置換対象とする置換先データが格納される第2の設定領域と、を設定しておいた上で、プロセッサがアクセス先を指定した前記メモリの指定アドレスが、前記第1の設定領域の第1の先頭アドレス及び終端アドレスの間に含まれる場合、前記指定アドレスを、前記第2の設定領域の第2の先頭アドレスに対して、前記指定アドレスと前記第1の先頭アドレスとの差分を加算した置換先アドレスへと変更するアドレス変換回路を有するメモリアドレス生成装置。
【選択図】 図3

Description

本発明は、メモリアドレス生成装置及びそれを有したプロセッサ、メモリアドレス生成方法に関する。
マイクロコンピュータやDSP等の信号処理を行うプロセッサは、プログラムメモリやデータメモリ等のアクセス可能なメモリを内蔵若しくは外付けしてある。プロセッサが、このようなメモリへのアクセスを行うアドレスを指定する方式としては、直接アドレス指定方式、間接アドレス指定方式、相対アドレス指定方式、基底アドレス指定方式等がある。よって、プロセッサは、これらのアドレス指定方式を実現すべく、メモリに対してアクセスを行うアドレスを生成するメモリアドレス生成装置(例えば、以下に示す特許文献1を参照)を具備する。
特開平6−337812号公報
ところで、プロセッサに要求される処理の高度化や複雑化に伴って、メモリに対して要求される格納すべきデータ容量も年々増加の一途をたどっている。かかる状況下で、例えば、プロセッサの一つであるDSP(Digital Signal Processor)は、乗算ならびに累積加算等を伴うデジタルフィルタ演算(FIR(Finite Impulse Response)、IIR(Infinite Impulse Response)等)を実施するにあたり、同一の乗算器ならびに加算器を用いつつも、そのデジタルフィルタ演算のフィルタ係数を動的に切り替えて、複数の処理を実施している。この場合、フィルタ係数の中には、複数の処理において共通の内容となる静的データや、複数の処理において異なった内容となる動的データが混在する。よって、プロセッサは、複数の処理毎の静的データ及び動的データをメモリに格納していたが、その際、静的データは各処理で共通の内容であるにも関わらずメモリに複数格納されることになるため冗長であり、メモリの使用容量の増加の一因となっていた。
さらに、例えば、メモリがマスクROMの場合、そのマスクROMに格納されたプログラムとしては、マスクROM製造後においても、バグが発見される場合や、システムの仕様変更に伴いプログラム内容の変更がなされる場合がある。この場合、マスクROMである以上、デバッグやプログラム変更のためのマスクROMの書き換えは困難であるため、バグや変更前のプログラムがそのままの状態でマスクROMに格納されることとなる。このこともまた同様に、メモリの使用容量の増加の一因となっていた。
前述した課題を解決するための主たる本発明は、プロセッサに設けられ、当該プロセッサがアクセス可能なメモリに対しアクセス先のアドレスを生成するメモリアドレス生成装置において、前記メモリが提供するアドレス空間にあって、置換元データが格納される第1の設定領域と、当該置換元データの置換対象とする置換先データが格納される第2の設定領域と、を設定しておいた上で、前記プロセッサがアクセス先を指定した前記メモリの指定アドレスが、前記第1の設定領域の第1の先頭アドレス及び終端アドレスの間に含まれる場合、前記指定アドレスを、前記第2の設定領域の第2の先頭アドレスに対して、前記指定アドレスと前記第1の先頭アドレスとの差分を加算した置換先アドレスへと変更するアドレス変換回路を有しており、前記指定アドレスが前記第1の先頭アドレス及び前記終端アドレスの間に含まれる場合、前記指定アドレスに応じた前記第1の設定領域の前記置換元データは、前記置換先アドレスに応じた前記第2の設定領域の前記置換先データへと置換されること、とする。
本発明によれば、メモリの記憶容量を効率的に使用可能なメモリアドレス生成装置及びそれを有したプロセッサ、メモリアドレス生成方法を提供することができる。
<プロセッサの全体構成>
図1は、本発明に係る『プロセッサ』の全体構成例を示す図である。なお、以下では、プロセッサはDSPであるものとして説明するが、その他のマイクロコンピュータやASIC(Application Specific IC)等としてもよい。なお、DSPは、デジタル信号処理に特化したマイクロプロセッサであり、音声、通信、計測、画像、音響等の幅広い分野におけるデジタル信号処理に用いられている。DSPは、デジタル信号処理で多用される積和演算を高速に行うためのハードウェア積和演算器(MAC)を搭載しており、1命令で複数の処理を実行させる並列処理や、プログラムメモリとデータメモリを分離させるハーバードアーキテクチャ等が特徴である。また、DSPは、高速動作が基本であるので、高速アクセスが可能なプログラムメモリやデータメモリを一般的には外付けではなく内蔵している。
図1に示すプロセッサは、プログラムカウンタ10、プログラムメモリ20、インストラクションレジスタ30、インストラクションデコーダ40、メモリアドレス生成装置200、データメモリ70、演算器100、によって主に構成される他に、I/Oポートや各種レジスタ等(いずれも不図示)を有する。
プログラムカウンタ10は、実行すべきプログラムの格納先を指定するプログラムアドレスを順次設定するカウンタである。プログラムメモリ20は、一般的にはROM(EEPROM等)で構成され、プログラムの命令コードが格納されるメモリである。インストラクションレジスタ30は、プログラムメモリ20からフェッチされた命令コードを一時的に格納するレジスタである。インストラクションデコーダ40は、インストラクションレジスタ30に格納されている命令コードを解読するデコーダである。
メモリアドレス生成装置200は、本発明に係る『メモリアドレス生成装置』の一実施形態である。メモリアドレス生成装置200は、アドレス生成回路50と、アドレス変換回路60と、を有して、基本的には、データメモリ70へのアクセス先を示すアドレスを生成するものである。なお、データメモリ70が提供するアドレス空間において、通常のアクセスが行われる通常アクセス領域701と、置換元データが格納される置換元領域702(『第1の設定領域』)と、置換元データの置換対象とする置換先データが格納される置換先領域703(『第2の設定領域』)と、が設定されるものとする(図4を参照)。
アドレス生成回路50は、インストラクションデコーダ40における命令コードの解読結果に基づき、データメモリ70に対してアクセス先のアドレス(以下、指定アドレスと称する。)を生成するものである。このアドレス指定方式としては、直接アドレス指定方式、間接アドレス指定方式、相対アドレス指定方式、基底アドレス指定方式等を採用することができる。なお、本実施形態では、相対アドレス指定方式を採用しており、アドレス生成回路50は、アドレスレジスタ51にデータメモリ70のアクセス開始先を示すループ開始アドレスを格納しておき、アドレス演算器52において、アドレスレジスタ51に格納しておいたループ開始アドレスから所定のステップ値をループ演算にて増減することで、指定アドレスを順次生成する場合とするが、これに限定されるものではない。
アドレス変換回路60は、本発明に係る『アドレス変換回路』の一実施形態である。アドレス変換回路60は、アドレス生成回路50において生成された指定アドレスが、置換元領域702の先頭位置に付与されるOLB(Overlay Begin)アドレス(『第1の先頭アドレス』)及び置換元領域702の終端位置に付与されるOLE(Overlay End)アドレス(『終端アドレス』)の間に含まれる場合には、指定アドレスを、置換先領域703の先頭位置に付与されるOLC(Overlay Convert begin)アドレス(『第2の先頭アドレス』)に対して、指定アドレスとOLBアドレスとの差分を加算した置換先アドレスへと変更するものである。そして、プロセッサがこの置換先アドレスに基づきデータメモリ70の置換先領域703から指定された置換先データを読み出すことで、指定アドレスに応じた置換元領域702の置換元データは、結果として、置換先アドレスに応じた置換先領域703の置換先データへと置換されることになる。一方、指定アドレスが、置換元領域702に付与される第1の先頭アドレス及び終端アドレスの間に含まれない場合には、指定アドレスから置換先アドレスへの変換がなされず、プロセッサより指定された指定アドレスのままでデータメモリ70の通常アクセス領域701へのアクセスが行われることになる。このようにして、データメモリ70が提供する記憶容量を効率的に使用することが可能となる。また、例えば、データメモリ70がブロック単位やページ単位等の所定容量のデータ固まりでアクセスがなされる場合、置換元データに該当するデータ固まりを、一斉に且つ効率良く置換することが可能となる。
データメモリ70は、インストラクションデコーダ40において解読された命令コードに基づく演算を行うためのデータが格納されるメモリである。データメモリ70は、ROM、RAM若しくはそれらの組み合わせで構成されるものである。前述したように、データメモリ70が提供するアドレス空間としては、通常アクセス領域701、置換元領域702、置換先領域703が設定される。
演算器100は、インストラクションデコーダ40において解読された命令コードに基づく演算(乗算、累積加算等)を、データメモリ70から読み出されたデータを用いて行うものである。ここで、演算器100の内部構成としては、例えば、図2に示すようなデジタルフィルタの基本的な演算である畳み込み演算を実現するハードウェアとなる。なお、畳み込み演算は、「y(n)=Σh(k)x(n−k);但し、k=0〜N−1」に示されるものである。
図2において、入力信号x(n−k)がレジスタ101a、101b、・・・、101cへと順次入力される毎に、レジスタ101a、101b、・・・、101cのタップ出力を最も遅延させたx(n−N+1)からx(n)まで順に切り替えて、乗算器102の一方の入力端子へと供給する。それと同期して、データメモリ70に予め格納しておいたフィルタ係数をh(N−1)から順にh(0)までを乗算器102の他方の入力端子へと供給する。そして、乗算器102の乗算結果が、加算器103の一方の入力端子へと順次供給される。なお、加算器103の他方の入力端子には、ACC(Accumulator)104に格納しておいた前回の加算器103の累積加算結果が順次供給される。この結果、加算器103の新たな累積加算結果がACC104へと順次格納される。このような動作をN回実行されることで、畳み込み演算が完了する。
<メモリアドレス生成装置の構成>
図3は、メモリアドレス生成装置200の構成を示す図である。
まず、データメモリ70のアドレス空間は、先頭位置を示すOLBアドレスと終端位置を示すOLEアドレスで特定される置換元領域702と、置換元領域702と同一容量であり且つその先頭位置を示すOLCアドレスで特定される置換先領域703とが設定される。なお、置換元領域702と置換先領域703を同一容量としたことで、置換先領域703は、その先頭位置を示すOLCアドレスのみで特定される。このため、置換先領域703の終端位置を示すアドレスは、本発明に係るアドレス変換の仕組みにおいて不要となり、アドレス変換回路60の構成が簡素化される。
また、データメモリ70のアドレス空間としては、置換元領域702の先頭位置を示すOLBアドレスより前のアドレスが付与される通常アクセス領域701aと、置換元領域702の終端位置を示すOLEアドレスから置換先領域703の先頭位置を示すOLCアドレスまでの間のアドレスが付与される通常アクセス領域701bと、置換先領域703の終端位置を示すアドレスよりも後のアドレスが付与される通常アクセス領域701cとが、設定される場合とする。なお、後述するよう、置換元領域702と置換先領域703は重なり合ってもよく、この場合、通常アクセス領域701bは設定されない。
アドレス生成回路50は、前述したように、データメモリ70のアクセス先を指定する指定アドレスを生成するものである。
アドレス変換回路60は、前述したように、アドレス生成回路50において生成された指定アドレスを置換先アドレスに変換して出力するか、若しくは、アドレス生成回路50において生成された指定アドレスをそのまま出力するかを設定するものである。
OLCレジスタ601(『第3のアドレスレジスタ』)は、OLCアドレスを格納するアドレスレジスタであり、OLBレジスタ602(『第1のアドレスレジスタ』)はOLBアドレスを格納するアドレスレジスタであり、OLEレジスタ603(『第2のアドレスレジスタ』)はOLEアドレスを格納するアドレスレジスタである。ここで、OLCレジスタ601、OLBレジスタ602、OLEレジスタ603の各内容、すなわちOLCアドレス、OLBアドレス並びにOLEアドレスは、DSPと通信可能に接続された外部のマイクロコンピュータ等によって適宜なタイミング(例えば、DSPのイニシャライズ時や、プログラム実行中等)で自由に書き換え可能とする。すなわち、データメモリ70のアドレス空間おいて、置換元領域702ならびに置換先領域703の設定位置ならびにその容量が自由に設定可能となる。この結果、本発明に係るアドレス変換の自由度が向上する。
OLEN(Overlay Enable)フラグレジスタ604(『イネーブルフラグレジスタ』)は、本発明に係るアドレス変換、すなわち、置換元データから置換先データへの置換を行うか否か設定するイネーブルフラグ(1:enable,0:disable)を格納する制御レジスタである。OLENフラグレジスタ604の内容、すなわちイネーブルフラグもまた同様に、DSPと通信可能に接続された外部のマイクロコンピュータ等によって適宜なタイミングで自由に書き換え可能とする。この結果、プログラム実行中の係数切り替え時やバグ修正時等の必要に応じたタイミングで、本発明に係るアドレス変換を実施することができる。
減算器605(『第1の減算器』)は、アドレス生成回路50において生成された指定アドレスとOLBレジスタ602に格納されたOLBアドレスとの差分(『第1の差分』)である「指定アドレス−OLBアドレス」を演算するものである。すなわち、この差分「指定アドレス−OLBアドレス」に基づく正又は負を示す符号ビットは、指定アドレスがOLBアドレスよりも前か後ろを判定する材料となる。さらに、この差分「指定アドレス−OLBアドレス」は、置換先アドレスを生成するための材料にもなる。
減算器606(『第2の減算器』)は、OLEレジスタ603に格納されたOLEアドレスとアドレス生成回路50において生成された指定アドレスとの差分(『第2の差分』)である「OLEアドレス−指定アドレス」を演算するものである。すなわち、この差分「OLEアドレス−指定アドレス」に基づく正又は負を示す符号ビットは、指定アドレスがOLEアドレスよりも前か後ろを判定する材料となる。
加算器607は、OLCレジスタ601に格納されたOLCアドレスと、減算器605の差分「指定アドレス−OLBアドレス」との加算を行い、その加算結果「OLCアドレス+指定アドレス−OLBアドレス」を置換先アドレスとして生成するものである。
選択回路609は、アドレス生成回路50において生成された指定アドレス、又は、加算器607において生成された置換先アドレスのいずれか一方を、AND素子608の出力に基づいて選択するものである。そして、選択回路609において選択された指定アドレス又は置換先アドレスは、アドレスレジスタ610に一時的に格納された後、データメモリ70へと供給される。この結果、データメモリ70は、選択回路609において選択された指定アドレス又は置換先アドレスに基づきアクセスがなされる。
AND素子608は、本発明に係る『選択制御回路』の一実施形態である。AND素子608は、減算器605の差分「指定アドレス−OLBアドレス」の符号ビットと、減算器606の差分「OLEアドレス−指定アドレス」の符号ビットに基づいて、アドレス生成回路50において生成された指定アドレスが、OLBアドレスとOLEアドレスとの間に含まれるか否かを判別する。詳述すると、以下の3とおりの組み合わせのうち、いずれか一つが判別される。
1.指定アドレスがOLBアドレスより前の場合
減算器605の差分「指定アドレス−OLBアドレス」の符号ビットが負。
減算器606の差分「OLEアドレス−指定アドレス」の符号ビットが正。
2.指定アドレスがOLBアドレスとOLEアドレスの間の場合
減算器605の差分「指定アドレス−OLBアドレス」の符号ビットが正。
減算器606の差分「OLEアドレス−指定アドレス」の符号ビットが正。
3.指定アドレスがOLEアドレスより後ろの場合
減算器605の差分「指定アドレス−OLBアドレス」の符号ビットが正。
減算器606の差分「OLEアドレス−指定アドレス」の符号ビットが負。
よって、AND素子608は、減算器605、606の各差分の符号ビットがともに正(ともに0)である場合、指定アドレスがOLBアドレスとOLEアドレスの間に含まれる旨を判別し、選択回路609に対して、加算器607の加算結果である置換先アドレスを選択させるべく制御する。一方、AND素子608は、減算器605、606の各差分の符号ビットがともに正でない場合、指定アドレスがOLBアドレスとOLEアドレスとの間に含まれない旨を判別し、選択回路609に対して、アドレス生成回路50において生成された指定アドレスを選択させるべく制御する。
さらに、AND素子608は、OLENフラグレジスタ604に格納されたイネーブルフラグに基づき、このイネーブルフラグが、本発明に係るアドレス変換、すなわち置換元データから置換先データへの置換を行う旨(1:enable)を示す場合には選択回路609における指定アドレス又は置換先アドレスの選択を有効とさせる。一方、イネーブルフラグが、本発明に係るアドレス変換、すなわち置換元データから置換先データへの置換を行わない旨(0:disable)を示す場合には選択回路609において指定アドレスのみの選択を有効とさせる。
メモリアドレス生成装置200は、まず、前述した構成により、図4に示すようなアクセスを実施することになる。なお、図4の紙面左側は、アドレス生成回路50において生成される指定アドレスの位置(見かけ上のアクセス点)を示すものである。また、図4の紙面右側は、選択回路609において選択された指定アドレス若しくは置換先アドレスの位置(実際のアクセス点)を示すものである。
すなわち、図4に示すように、OLBアドレスよりも前となる指定アドレスAの場合、その指定アドレスAのままで通常アクセス領域701aがアクセスされる。また、OLBアドレスとOLEアドレスとの間に含まれる指定アドレスBの場合、指定アドレスBとOLBアドレスとの差分にOLCアドレスを加算した置換先アドレスで置換先領域703がアクセスされる。また、OLEアドレスとOLCアドレスとの間に含まれる指定アドレスCの場合、その指定アドレスCのままで通常アクセス領域701cがアクセスされる。また、OLCアドレスと(OLCアドレス+OLEアドレス−OLBアドレス)との間に含まれる指定アドレスDの場合、その指定アドレスDのままで置換先領域703がアクセスされる。また、(OLCアドレス+OLEアドレス−OLBアドレス)の後ろとなる指定アドレスEの場合、その指定アドレスEのままで通常アクセス領域701cがアクセスされる。このようなメモリアドレス生成装置200の仕組みによって、データメモリ70が提供する記憶容量を効率良く使用することが可能となる。
前述したメモリアドレス生成装置200の仕組みは、例えば、図5に示すような動的データの置換の場合に利用できる。ここで、例えば、DSPが実施する複数のデジタルフィルタ処理において、夫々の処理を切り替える際に共通の内容であるため変更を行う必要が無い静的なフィルタ係数(以下、静的フィルタ係数)と、夫々の処理を切り替える際に異なる内容であるため変更を行う必要がある動的なフィルタ係数(以下、動的フィルタ係数)と、が用いられることとする。
この場合、データメモリ70が提供するアドレス空間は、ROMのアドレス空間のみで構成されることとし、この結果、置換元領域702及び置換先領域703、ひいては通常アクセス領域701が全てROMのアドレス空間内に設定されることとする。そして、通常アクセス領域701aには静的フィルタ係数を格納し、置換元領域702には複数の動的フィルタ係数のうち代表的な動的フィルタ係数Aを格納し、OLCアドレスBやOLCアドレスCで設定される置換先領域703a、703bには複数の動的フィルタ係数のうち代表的なもの以外となる動的フィルタ係数B、Cが夫々格納されることとする。
この場合、DSPは、デジタルフィルタ処理を切り替えに伴って処理に使用する動的フィルタ係数を切り替える際には、指定アドレスが置換元領域702の先頭位置を示すOLBアドレスと終端位置を示すOLEアドレスとの間に含まれる場合、指定アドレスに応じた置換元領域702に格納された動的フィルタ係数Aを、置換先アドレスに応じた置換先領域703a、703bに格納された動的フィルタ係数B、Cへと置換する。このようにして、複数のデジタルフィルタ処理毎に静的フィルタ係数を格納する必要がなく、データメモリ70が提供する記憶容量を効率的に使用することが可能となる。
さらに、前述したメモリアドレス生成装置200の仕組み、特にアドレス変換回路60の仕組みは、データメモリ70へのアクセスに限らず、プログラムメモリ20へのアクセスにも適用することができる。なお、この場合、図1に示したプログラムカウンタ10とプログラムメモリ20との間にアドレス変換回路60と同様な仕組みを設けることで実施可能となる。
例えば、図6に示すように、プログラムメモリ20が提供するアドレス空間は、ROMが提供するアドレス空間及びRAMが提供するアドレス空間を合成して構成される場合とする。また、置換元領域202はROMのアドレス空間内に設定されるとともに、置換先領域203はRAMのアドレス空間内に設定される場合とする。さらに、置換元領域202に格納される置換元データは、バグが生じた領域のバグデータであり、置換先領域203に格納される置換先データは、バグを修正したバグ修正データである場合とする。
この場合、DSPは、指定アドレスが、バグデータを格納する置換元領域202の先頭位置を示すOLBアドレスと終端位置を示すOLEアドレスとの間に含まれる場合、その指定アドレスを置換先領域203の置換先アドレスに変更する。DSPは、この置換先アドレスに基づいて置換先領域203をアクセスすることで、結果的には、置換元領域202のバグデータを、置換先アドレスに応じた置換先領域203のバグ修正データへと置換することになる。このように、ROMのプログラムの内容を書き換える必要が生じたがROMの書き換えが困難な場合であっても、マスク変更やDSPのシステムプログラムの修正を伴わず、プログラムメモリ20が提供する記憶容量を効率良く使用することが可能となる。
<MSB拡張>
<<MSB拡張しなくても問題が生じない場合>>
図7は、データメモリ70の全アドレス空間が“0000h”から“FFFFh”までの範囲で定義されている場合であり、さらに、OLBアドレスを“1000h”、OLEアドレスを“2FFFh”、OLCアドレスを“8000h”と設定した場合において、各アドレスに“1’b0”のMSBを拡張しないときと、“1’b0”のMSB拡張をするときの、データメモリ70へのアクセス点のアドレス変換の様子を示すものである。
なお、図7の紙面左側は、アドレス生成回路50において生成される指定アドレスの位置(見かけ上のアクセス点)を示すものである。また、図7の紙面中央は、各アドレスに“1’b0”のMSB拡張を行わずに減算器605、606において演算が行われた場合の置換先アドレスの位置(実際のアクセス点)を示すものである。さらに、図7の紙面右側は、各アドレスに“1’b0”のMSB拡張を行った上で減算器605、606において演算が行われた場合の置換先アドレスの位置(実際のアクセス点)を示すものである。
また、OLBアドレスが“1000h”でありOLEアドレスが“2FFFh”であるため、置換元領域702は“2000h”の範囲である。また、置換先領域703は、OLCアドレスの“8000h”から、それに置換元領域702の範囲“2000h”を加算した“9FFFh”までの範囲である。よって、図7に示す例は、置換元領域702ならびに置換先領域703は、データメモリ70の全範囲“FFFFh”の半分以下に相当する場合である。
===指定アドレスA(0800h)の場合===
アドレス生成回路50において生成される指定アドレスが“0800h”(指定アドレスA)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “0800h”−“1000h”=“F800h”
(MSB拡張有り): “00800h”−“01000h”=“1F800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “2FFFh”−“0800h”=“27FFh”
(MSB拡張有り): “02FFFh”−“00800h”=“027FFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“1(負)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“0(正)”となる。この結果、AND素子608は、MSB拡張無しの場合とMSB拡張有りの場合の双方ともクローズとなり、選択回路609に対して指定アドレスA(0800h)を選択させる。
===指定アドレスB(1800h)の場合===
アドレス生成回路50において生成される指定アドレスが“1800h”(指定アドレスB)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “1800h”−“1000h”=“0800h”
(MSB拡張有り): “01800h”−“01000h”=“00800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “2FFFh”−“1800h”=“17FFh”
(MSB拡張有り): “02FFFh”−“01800h”=“017FFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“0(正)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“0(正)”となる。この結果、AND素子608は、MSB拡張無しの場合とMSB拡張有りの場合の双方ともオープンとなり、選択回路609に対して加算器607の加算結果である置換先アドレスBを選択させる。なお、置換先アドレスBは、つぎのとおり“8800h”となる。
・加算器607の加算結果「OLCアドレス+指定アドレス−OLBアドレス」
“8000h”+“0800h”=“8800h”
===指定アドレスC(5000h)の場合===
アドレス生成回路50において生成される指定アドレスが“5000h”(指定アドレスC)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “5000h”−“1000h”=“4000h”
(MSB拡張有り): “05000h”−“01000h”=“04000h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “2FFFh”−“5000h”=“DFFFh”
(MSB拡張有り): “02FFFh”−“05000h”=“1DFFFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“0(正)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“1(負)”となる。この結果、AND素子608は、MSB拡張無しの場合とMSB拡張有りの場合の双方ともクローズとなり、選択回路609に対して指定アドレスC(5000h)を選択させる。
===指定アドレスD(9800h)の場合===
アドレス生成回路50において生成される指定アドレスが“9800h”(指定アドレスD)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “9800h”−“1000h”=“8800h”
(MSB拡張有り): “09800h”−“01000h”=“08800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “2FFFh”−“9800h”=“97FFh”
(MSB拡張有り): “02FFFh”−“09800h”=“197FFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合には“1(正)”となり、MSB拡張有りの場合には“0(正)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“1(負)”となる。この結果、AND素子608は、MSB拡張無しの場合とMSB拡張有りの場合の双方ともクローズとなり、選択回路609に対して指定アドレスD(9800h)を選択させる。
===指定アドレスE(C000h)の場合===
アドレス生成回路50において生成される指定アドレスが“C000h”(指定アドレスE)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “C000h”−“1000h”=“B800h”
(MSB拡張有り): “0C000h”−“01000h”=“0B800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “2FFFh”−“C000h”=“6FFFh”
(MSB拡張有り): “02FFFh”−“0C000h”=“16FFFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合には“1(正)”となり、MSB拡張有りの場合には“0(正)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合には“0(負)”となり、MSB拡張有りの場合には“1(負)”となる。この結果、AND素子608は、MSB拡張無しの場合とMSB拡張有りの場合の双方ともクローズとなり、選択回路609に対して指定アドレスE(C000h)を選択させる。
このように、置換元領域702ならびに置換先領域703が、データメモリ70の全範囲“FFFFh”の半分以下に相当する場合には、指定アドレスA〜Eのいずれの場合であっても、OLBアドレス、OLEアドレスならびに指定アドレスの各アドレスにMSBを拡張してもしなくても問題が生じず、本発明で意図したアドレス変換が実施されることになる。
<<MSB拡張しないと問題が生じる場合>>
図8は、データメモリ70の全アドレス空間が“0000h”から“FFFFh”までの範囲で定義されている場合であり、さらに、OLBアドレスを“1000h”、OLEアドレスを“9FFFh”、OLCアドレスを“6000h”と設定した場合において、各アドレスに“1’b0”のMSBを拡張しないときと、“1’b0”のMSB拡張をするときの、データメモリ70へのアクセス点のアドレス変換の様子を示すものである。
なお、図8の紙面左側は、アドレス生成回路50において生成される指定アドレスの位置(見かけ上のアクセス点)を示すものである。また、図8の紙面中央は、各アドレスに“1’b0”のMSB拡張を行わずに減算器605、606において演算が行われた場合の置換先アドレスの位置(実際のアクセス点)を示すものである。さらに、図8の紙面右側は、各アドレスに“1’b0”のMSB拡張を行った上で減算器605、606において演算が行われた場合の置換先アドレスの位置(実際のアクセス点)を示すものである。
また、OLBアドレスが“1000h”でありOLEアドレスが“9FFFh”であるため、置換元領域702は“9000h”の範囲である。また、置換先領域703は、OLCアドレスの“6000h”から、それに置換元領域702の範囲“9000h”を加算した“EFFFh”までの範囲である。よって、図7に示す例は、置換元領域702ならびに置換先領域703は、データメモリ70の全範囲“FFFFh”の半分を超える場合である。
===指定アドレスF(0800h)の場合===
アドレス生成回路50において生成される指定アドレスが“0800h”(指定アドレスF)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “0800h”−“1000h”=“F800h”
(MSB拡張有り): “00800h”−“01000h”=“1F800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “9FFFh”−“0800h”=“97FFh”
(MSB拡張有り): “09FFFh”−“00800h”=“097FFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“1(負)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合には“1(正)”となり、MSB拡張有りの場合には“0(正)”となる。この結果、AND素子608は、MSB拡張無しの場合とMSB拡張有りの場合の双方ともクローズとなり、選択回路609に対して指定アドレスA(0800h)を選択させる。
===指定アドレスG(1800h)の場合===
アドレス生成回路50において生成される指定アドレスが“1800h”(指定アドレスG)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “1800h”−“1000h”=“0800h”
(MSB拡張有り): “01800h”−“01000h”=“00800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “9FFFh”−“1800h”=“87FFh”
(MSB拡張有り): “09FFFh”−“01800h”=“087FFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“0(正)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合には“1(正)”となり、MSB拡張有りの場合には“0(正)”となる。この結果、AND素子608は、MSB拡張無しの場合にはクローズとなり、選択回路609に対して、本発明で意図するものとは異なる指定アドレスG(1800h)を選択させる。また、AND素子608は、MSB拡張有りの場合にはオープンとなり、選択回路609に対して、加算器607の加算結果であり本発明で意図する置換先アドレスGを選択させる。なお、置換先アドレスGは、つぎのとおり“6800h”となる。
・加算器607の加算結果「OLCアドレス+指定アドレス−OLBアドレス」
“6000h”+“0800h”=“6800h”
===指定アドレスH(3800h)の場合===
アドレス生成回路50において生成される指定アドレスが“3800h”(指定アドレスH)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “3800h”−“1000h”=“2800h”
(MSB拡張有り): “03800h”−“01000h”=“02800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “9FFFh”−“3800h”=“67FFh”
(MSB拡張有り): “09FFFh”−“03800h”=“067FFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“0(正)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“0(正)”となる。この結果、AND素子608は、MSB拡張無しの場合とMSB拡張有りの場合の双方ともオープンとなり、選択回路609に対して、加算器607の加算結果である置換先アドレスHを選択させる。なお、置換先アドレスHは、つぎのとおり“8800h”となる。
・加算器607の加算結果「OLCアドレス+指定アドレス−OLBアドレス」
“6000h”+“2800h”=“8800h”
===指定アドレスI(6800h)の場合===
アドレス生成回路50において生成される指定アドレスが“6800h”(指定アドレスI)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “6800h”−“1000h”=“5800h”
(MSB拡張有り): “06800h”−“01000h”=“05800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “9FFFh”−“6800h”=“37FFh”
(MSB拡張有り): “09FFFh”−“06800h”=“037FFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“0(正)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“0(正)”となる。この結果、AND素子608は、MSB拡張無しの場合とMSB拡張有りの場合の双方ともオープンとなり、選択回路609に対して、加算器607の加算結果である置換先アドレスIを選択させる。なお、置換先アドレスIは、つぎのとおり“B800h”となる。
・加算器607の加算結果「OLCアドレス+指定アドレス−OLBアドレス」
“6000h”+“5800h”=“B800h”
===指定アドレスJ(7800h)の場合===
アドレス生成回路50において生成される指定アドレスが“7800h”(指定アドレスI)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “7800h”−“1000h”=“6800h”
(MSB拡張有り): “07800h”−“01000h”=“06800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “9FFFh”−“7800h”=“27FFh”
(MSB拡張有り): “09FFFh”−“07800h”=“027FFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“0(正)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“0(正)”となる。この結果、AND素子608は、MSB拡張無しの場合とMSB拡張有りの場合の双方ともオープンとなり、選択回路609に対して、加算器607の加算結果である置換先アドレスJを選択させる。なお、置換先アドレスJは、つぎのとおり“C800h”となる。
・加算器607の加算結果「OLCアドレス+指定アドレス−OLBアドレス」
“6000h”+“6800h”=“C800h”
===指定アドレスK(9800h)の場合===
アドレス生成回路50において生成される指定アドレスが“9800h”(指定アドレスK)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “9800h”−“1000h”=“8800h”
(MSB拡張有り): “09800h”−“01000h”=“08800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “9FFFh”−“9800h”=“07FFh”
(MSB拡張有り): “09FFFh”−“09800h”=“007FFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合には“1”となり、MSB拡張有りの場合には“0(正)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“0(正)”となる。この結果、AND素子608は、MSB拡張無しの場合にはクローズとなり、選択回路609に対して、本発明で意図するものとは異なる指定アドレスK(9800h)を選択させる。また、AND素子608は、MSB拡張有りの場合にはオープンとなり、選択回路609に対して、加算器607の加算結果であり本発明で意図する置換先アドレスKを選択させる。なお、置換先アドレスKは、つぎのとおり“E800h”となる。
・加算器607の加算結果「OLCアドレス+指定アドレス−OLBアドレス」
“6000h”+“8800h”=“E800h”
===指定アドレスL(A800h)の場合===
アドレス生成回路50において生成される指定アドレスが“A800h”(指定アドレスL)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “A800h”−“1000h”=“9800h”
(MSB拡張有り): “0A800h”−“01000h”=“09800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “9FFFh”−“A800h”=“F7FFh”
(MSB拡張有り): “09FFFh”−“0A800h”=“1F7FFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合には“1(正)”となり、MSB拡張有りの場合には“0(正)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“1(負)”となる。この結果、AND素子608は、MSB拡張無しの場合とMSB拡張有りの場合の双方ともクローズとなり、選択回路609に対して指定アドレスL(A800h)を選択させる。
===指定アドレスM(E800h)の場合===
アドレス生成回路50において生成される指定アドレスが“E800h”(指定アドレスN)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “E800h”−“1000h”=“D800h”
(MSB拡張有り): “0E800h”−“01000h”=“0D800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “9FFFh”−“E800h”=“B7FFh”
(MSB拡張有り): “09FFFh”−“0E800h”=“1B7FFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合には“1(正)”となり、MSB拡張有りの場合には“0(正)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“1(負)”となる。この結果、AND素子608は、MSB拡張無しの場合とMSB拡張有りの場合の双方ともクローズとなり、選択回路609に対して指定アドレスM(E800h)を選択させる。
===指定アドレスN(F800h)の場合===
アドレス生成回路50において生成される指定アドレスが“E800h”(指定アドレスN)の場合、減算器605、606の各差分は、MSB拡張無しのときとMSB拡張有りのときでは夫々つぎのようになる。
・減算器605の差分「指定アドレス−OLBアドレス」
(MSB拡張無し): “F800h”−“1000h”=“E800h”
(MSB拡張有り): “0F800h”−“01000h”=“0E800h”
・減算器606の差分「OLEアドレス−指定アドレス」
(MSB拡張無し): “9FFFh”−“F800h”=“A7FFh”
(MSB拡張有り): “09FFFh”−“0F800h”=“0A7FFh”
よって、減算器605の差分のMSBは、MSB拡張無しの場合には“1(正)”となり、MSB拡張有りの場合には“0(正)”となる。また、減算器606の差分のMSBは、MSB拡張無しの場合とMSB拡張有りの場合の双方とも“1(負)”となる。この結果、AND素子608は、MSB拡張無しの場合とMSB拡張有りの場合の双方ともクローズとなり、選択回路609に対して指定アドレスM(F800h)を選択させる。
このように、置換元領域702ならびに置換先領域703が、データメモリ70の全範囲“FFFFh”の半分を超える場合には、OLBアドレス、OLEアドレスならびに指定アドレスの各アドレスにMSBを拡張しなければ、本発明で意図したアドレス変換が実施されない場合がある。例えば、前述したように、指定アドレスG(1800h)や指定アドレスK(9800h)の場合、置換先アドレスG(6800h)や置換先アドレスK(E800h)に変換されるべきところ、そのような変換が行われず、指定アドレスG(1800h)や指定アドレスK(9800h)のままでデータメモリ70へのアクセスが行われるという問題が生じることになる。ゆえに、OLBアドレス、OLEアドレスならびに指定アドレスの各アドレスには、1’b0のMSBを拡張する必要がある。
<<アドレス変換回路のMSB拡張部>>
前述したように、OLBアドレスとOLEアドレスの間として設定される置換元領域702が、データメモリ70が提供する全領域の半分よりも大きい場合、本発明で意図したアドレス変換が実施されない。このため、図3に示すアドレス変換回路60には拡張ビットレジスタ611a〜611cと、MSB拡張部612a〜612cと、を設けてある。
拡張ビットレジスタ611a〜611cは、1’b0(1ビットの「0」)を格納しておくレジスタである。
MSB拡張部612a(『第1のMSB拡張部』)は、アドレス生成回路50において生成されたNビットの指定アドレスのMSB(最上位ビット)に、拡張ビットレジスタ611aに格納しておいた1’b0を追加するものである。すなわち、指定アドレスは、Nビットから“N+1”ビットへと拡張される。
MSB拡張部612b(『第2のMSB拡張部)は、OLBレジスタ602に格納されたNビットのOLBアドレスのMSB(最上位ビット)に、拡張ビットレジスタ611bに格納しておいた1’b0を追加するものである。すなわち、OLBアドレスは、Nビットから“N+1”ビットへと拡張される。
MSB拡張部612c(『第3のMSB拡張部』)は、OLEレジスタ603に格納されたNビットのOLEアドレスのMSB(最上位ビット)に、拡張ビットレジスタ611cに格納しておいた1’b0を追加するものである。すなわち、OLEアドレスは、Nビットから“N+1”ビットへと拡張される。
このように、指定アドレス、OLBアドレス、OLEアドレスを夫々Nビットから“N+1”ビットへと拡張しておいた上で、減算器605は、ともに“N+1”ビットに拡張された指定アドレスとOLBアドレスとの差分「指定アドレス−OLBアドレス」を演算し、減算器605は、ともに“N+1”ビットに拡張されたOLEアドレスと指定アドレスとの差分「OLEアドレス−指定アドレス」を演算する。よって、減算器605の差分「指定アドレス−OLBアドレス」と、減算器606の差分「OLEアドレス−指定アドレス」はともに“N+1”ビットである。
なお、加算器607は、OLCレジスタ601に格納されたNビットのOLCアドレスと、減算器605の“N+1ビット”の差分「指定アドレス−OLBアドレス」から、MSBを除外したNビットと、を加算する。よって、選択回路609は、ビット拡張前のNビットの指定アドレス、又は、加算器607の加算結果であるNビットの置換先アドレスを、選択することとなる。さらに、AND素子608は、減算器605、606のともに“N+1”ビットの差分におけるMSBが入力されて、各MSBに基づいて指定アドレスがOLBアドレスとOLEアドレスとの間に含まれるか否かを判別することとなる。
このような仕組みを設けることによって、本発明で意図したアドレス変換が、確実に実施されることになる。
以上、本発明の例示的なそして現時点で好適とされる実施例を詳細に説明したが、本発明の概念は、種々変更して実施し適用することができ、また付属の請求の範囲は、先行技術によって限定されることは別として、種々の変形例を含むものである。
本発明の一実施形態に係るプロセッサの全体構成を示す図である。 本発明の一実施形態に係る演算器の構成を示す図である。 本発明の一実施形態に係るメモリアドレス生成装置の構成を示す図である。 本発明の一実施形態に係るアドレス変換を説明するための図である。 本発明の一実施形態に係るアドレス変換の具体例を説明するための図である。 本発明の一実施形態に係るアドレス変換の具体例を説明するための図である。 本発明の一実施形態に係るMSB拡張の目的を説明するための図である。 本発明の一実施形態に係るMSB拡張の目的を説明するための図である。
符号の説明
10 プログラムカウンタ
20 プログラムメモリ
30 インストラクションレジスタ
40 インストラクションデコーダ
50 アドレス生成回路
51 アドレスレジスタ
52 アドレス演算器
60 アドレス変換回路
601 OLCレジスタ
602 OLBレジスタ
603 OLEレジスタ
604 OLENフラグレジスタ
605、606 減算器
607 加算器
608 AND素子
609 選択回路
610 アドレスレジスタ
611a、611b、611c 拡張ビットレジスタ
612a、612b、612c MSB拡張部
70 データメモリ
701、701a、701b、701c 通常アクセス領域
202、702 置換元領域
203、703、703a、703b 置換先領域
100 演算器
101a、101b、101c レジスタ
102 乗算器
103 加算器
104 ACC
200 メモリアドレス生成装置

Claims (11)

  1. プロセッサに設けられ、当該プロセッサがアクセス可能なメモリに対しアクセス先のアドレスを生成するメモリアドレス生成装置において、
    前記メモリが提供するアドレス空間にあって、置換元データが格納される第1の設定領域と、当該置換元データの置換対象とする置換先データが格納される第2の設定領域と、を設定しておいた上で、前記プロセッサがアクセス先を指定した前記メモリの指定アドレスが、前記第1の設定領域の第1の先頭アドレス及び終端アドレスの間に含まれる場合、前記指定アドレスを、前記第2の設定領域の第2の先頭アドレスに対して、前記指定アドレスと前記第1の先頭アドレスとの差分を加算した置換先アドレスへと変更するアドレス変換回路を有しており、
    前記指定アドレスが前記第1の先頭アドレス及び前記終端アドレスの間に含まれる場合、前記指定アドレスに応じた前記第1の設定領域の前記置換元データは、前記置換先アドレスに応じた前記第2の設定領域の前記置換先データへと置換されること、
    を特徴とするメモリアドレス生成装置。
  2. 前記第1の設定領域と前記第2の設定領域とを同容量としたこと、を特徴とする請求項1に記載のメモリアドレス生成装置。
  3. 前記アドレス変換回路は、
    前記第1の先頭アドレスを設定する第1のアドレスレジスタと、
    前記終端アドレスを設定する第2のアドレスレジスタと、
    前記第2の先頭アドレスを設定する第3のアドレスレジスタと、
    を有することを特徴とする請求項1又は2に記載のメモリアドレス生成装置。
  4. 前記アドレス変換回路は、
    前記指定アドレスと前記第1の先頭アドレスとの第1の差分を演算する第1の減算器と、
    前記終端アドレスと前記指定アドレスとの第2の差分を演算する第2の減算器と、
    前記第2の先頭アドレスと前記第1の差分との加算を行い前記置換先アドレスを生成する加算器と、
    前記指定アドレス又は前記置換先アドレスを選択する選択回路と、
    前記第1の差分と前記第2の差分夫々における正又は負の符号ビットに基づいて、前記指定アドレスが、前記第1の先頭アドレスと前記終端アドレスとの間に含まれる旨を判別した場合には前記置換先アドレスを選択し、前記第1の先頭アドレスと前記終端アドレスとの間に含まれない旨を判別した場合には前記指定アドレスを選択すべく、前記選択回路を制御する選択制御回路と、
    を有することを特徴とする請求項1乃至3のいずれかに記載のメモリアドレス生成装置。
  5. 前記アドレス変換回路は、
    前記指定アドレスのMSBとして1ビットの「0」を追加する第1のMSB拡張部と、
    前記第1の先頭アドレスのMSBとして1ビットの「0」を追加する第2のMSB拡張部と、
    前記終端アドレスのMSBとして1ビットの「0」を追加する第3のMSB拡張部と、を有しており、
    前記第1の減算器は、前記1ビットの「0」を追加した前記指定アドレスと、前記1ビットの「0」を追加した前記第1の先頭アドレスとの前記第1の差分を演算し、
    前記第2の減算器は、前記1ビットの「0」を追加した前記終端アドレスと、前記1ビットの「0」を追加した前記指定アドレスとの前記第2の差分を演算すること、
    を特徴とする請求項4に記載のメモリアドレス生成装置。
  6. 前記アドレス変換回路は、
    前記置換元データから前記置換先データへの置換を行うか否か設定するイネーブルフラグを格納するイネーブルフラグレジスタを有しており、
    前記選択制御回路は、
    前記イネーブルフラグレジスタに格納されたイネーブルフラグに基づき、当該イネーブルフラグが前記置換を行う旨を示す場合には前記選択回路における前記指定アドレス又は前記置換先アドレスの選択を有効とし、当該イネーブルフラグが前記置換を行わない旨を示す場合には前記選択回路において前記指定アドレスのみの選択を有効とするよう、制御すること、
    を特徴とする請求項4又は5に記載のメモリアドレス生成装置。
  7. 前記メモリが提供するアドレス空間は、ROMのアドレス空間のみで構成され、
    前記第1の設定領域及び前記第2の設定領域は、前記ROMのアドレス空間内に設定されることとし、
    複数の処理において夫々共通の内容となる静的データ及び夫々異なる内容となる動的データが用いられる場合、前記第1の設定領域に格納される前記置換元データは前記複数の動的データのうちの代表データであり、
    前記第2の設定領域に格納される前記置換先データは、前記代表データ以外の動的データであること、
    を特徴とする請求項1乃至6のいずれかに記載のメモリアドレス生成装置。
  8. 前記メモリが提供するアドレス空間は、ROMのアドレス空間及びRAMのアドレス空間を合成して構成され、
    前記第1の設定領域は前記ROMのアドレス空間内に設定されるとともに、前記第2の設定領域は前記RAMのアドレス空間内に設定されることとし、
    前記第1の設定領域に格納される前記置換元データは、バグが生じた箇所のバグデータであり、
    前記第2の設定領域に格納される前記置換先データは、前記バグを修正したバグ修正データであること、
    を特徴とする請求項1乃至6のいずれかに記載のメモリアドレス生成装置。
  9. 請求項1乃至8のいずれかに記載のメモリアドレス生成装置を有したプロセッサ。
  10. 前記プロセッサはDSP(Digital Signal Processor)であり、前記メモリはプログラムメモリ若しくはデータメモリであることを特徴とする請求項9に記載のプロセッサ。
  11. プロセッサがアクセス可能なメモリに対しアクセス先のアドレスを生成するメモリアドレス生成方法において、
    前記メモリが提供するアドレス空間にあって、置換元データが格納される第1の設定領域と、当該置換元データを置換する置換先データが格納される第2の設定領域と、を設定しておき、
    前記プロセッサがアクセス先を指定した前記メモリの指定アドレスが、前記第1の設定領域の第1の先頭アドレス及び終端アドレスの間に含まれる場合、前記指定アドレスを、前記第2の設定領域の第2の先頭アドレスに対して、前記指定アドレスと前記第1の先頭アドレスとの差分を加算した置換先アドレスへと変更することとし、
    前記置換先アドレスに基づくアクセスによって、前記指定アドレスに応じた前記第1の設定領域の前記置換元データは、前記置換先アドレスに応じた前記第2の設定領域の前記置換先データへと置換されること、を特徴とするメモリアドレス生成方法。

JP2005113051A 2005-04-11 2005-04-11 メモリアドレス生成装置及びそれを有したプロセッサ、メモリアドレス生成方法 Withdrawn JP2006293663A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2005113051A JP2006293663A (ja) 2005-04-11 2005-04-11 メモリアドレス生成装置及びそれを有したプロセッサ、メモリアドレス生成方法
CNA2006100732363A CN1848097A (zh) 2005-04-11 2006-04-05 存储器地址生成装置以及具有它的处理器、存储器地址生成方法
TW095112692A TW200636464A (en) 2005-04-11 2006-04-10 Memory address generation device, processor with it and generation method of memory address
US11/279,204 US7409607B2 (en) 2005-04-11 2006-04-10 Memory address generating apparatus, processor having the same, and memory address generating method
KR1020060032275A KR100805027B1 (ko) 2005-04-11 2006-04-10 메모리 어드레스 생성 장치 및 그것을 가진 프로세서,메모리 어드레스 생성 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005113051A JP2006293663A (ja) 2005-04-11 2005-04-11 メモリアドレス生成装置及びそれを有したプロセッサ、メモリアドレス生成方法

Publications (1)

Publication Number Publication Date
JP2006293663A true JP2006293663A (ja) 2006-10-26

Family

ID=37077665

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005113051A Withdrawn JP2006293663A (ja) 2005-04-11 2005-04-11 メモリアドレス生成装置及びそれを有したプロセッサ、メモリアドレス生成方法

Country Status (5)

Country Link
US (1) US7409607B2 (ja)
JP (1) JP2006293663A (ja)
KR (1) KR100805027B1 (ja)
CN (1) CN1848097A (ja)
TW (1) TW200636464A (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2071468A4 (en) * 2006-12-25 2010-11-03 Panasonic Corp MEMORY CONTROL DEVICE, MEMORY DEVICE, AND MEMORY CONTROL METHOD
TWI421685B (zh) 2007-10-16 2014-01-01 Mstar Semiconductor Inc 記憶裝置之定址裝置及方法
CN101419570B (zh) * 2007-10-25 2012-07-04 晨星半导体股份有限公司 记忆装置的定址装置和方法
US9645010B2 (en) * 2009-03-10 2017-05-09 The Regents Of The University Of California Fluidic flow cytometry devices and methods
US9134221B2 (en) 2009-03-10 2015-09-15 The Regents Of The University Of California Fluidic flow cytometry devices and particle sensing based on signal-encoding
US8448030B2 (en) * 2010-02-25 2013-05-21 Interra Systems Inc. Method and apparatus for optimizing address generation for simultaneously running proximity-based BIST algorithms
KR101885936B1 (ko) 2010-10-21 2018-09-10 더 리젠츠 오브 더 유니버시티 오브 캘리포니아 무선 전력이 공급되는 전자 회로를 포함하는 미세 유체
US20150301935A1 (en) * 2012-03-02 2015-10-22 Renesas Electronics Corporation Microcomputer and nonvolatile semiconductor device
JP6396911B2 (ja) 2012-10-15 2018-09-26 ナノセレクト バイオメディカル, インコーポレイテッド 粒子を選別するためのシステム、装置、および、方法
KR102534825B1 (ko) * 2016-04-19 2023-05-22 에스케이하이닉스 주식회사 메모리 제어장치 및 이를 포함하는 데이터 저장 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06337812A (ja) 1993-05-31 1994-12-06 Sanyo Electric Co Ltd アドレス生成機構
US5712999A (en) * 1993-11-30 1998-01-27 Texas Instruments Address generator employing selective merge of two independent addresses
JPH10254782A (ja) 1997-03-07 1998-09-25 Fujitsu Ltd データ処理装置
JPH10275109A (ja) 1997-03-28 1998-10-13 Nec Corp ハードウェアによるメモリバンク入れ替え方式
US6260082B1 (en) * 1998-12-23 2001-07-10 Bops, Inc. Methods and apparatus for providing data transfer control
JP3399904B2 (ja) 2000-03-17 2003-04-28 松下電器産業株式会社 インタリーブアドレス生成装置
US6681346B2 (en) * 2000-05-11 2004-01-20 Goodrich Corporation Digital processing system including a DMA controller operating in the virtual address domain and a method for operating the same
US7064987B2 (en) 2002-04-04 2006-06-20 Mediatek, Inc. Memory address generator with scheduled write and read address generating capability
US7058874B2 (en) 2002-05-24 2006-06-06 Lucent Technologies Inc. Interleaver address generator and method of generating an interleaver address
US7188231B2 (en) * 2003-06-30 2007-03-06 Intel Corporation Multimedia address generator
US7434024B2 (en) * 2004-08-30 2008-10-07 Ati Technologies, Inc. SIMD processor with register addressing, buffer stall and methods

Also Published As

Publication number Publication date
US20060282752A1 (en) 2006-12-14
US7409607B2 (en) 2008-08-05
CN1848097A (zh) 2006-10-18
KR20060107926A (ko) 2006-10-16
TW200636464A (en) 2006-10-16
KR100805027B1 (ko) 2008-02-20

Similar Documents

Publication Publication Date Title
KR100805027B1 (ko) 메모리 어드레스 생성 장치 및 그것을 가진 프로세서,메모리 어드레스 생성 방법
JPH04109336A (ja) データ処理装置
JP2007299279A (ja) 演算装置、プロセッサシステム、及び映像処理装置
US5459847A (en) Program counter mechanism having selector for selecting up-to-date instruction prefetch address based upon carry signal of adder which adds instruction size and LSB portion of address register
JP2004030015A (ja) 情報処理装置及び電子機器
JP2001516917A (ja) デジタルオーディオ信号のデコードに最適なデジタルシグナルプロセッサ
US6799261B2 (en) Memory interface with fractional addressing
JP2008204249A (ja) データプロセッサ
US8452945B2 (en) Indirect indexing instructions
US7290120B2 (en) Microprocessor having a power-saving fetch and decoding unit for fetching and decoding compressed program instructions and having a program instruction sequencer
US20090037702A1 (en) Processor and data load method using the same
US6363469B1 (en) Address generation apparatus
US6425047B1 (en) Process containing address decoders suited to improvements in clock speed
JP3454393B2 (ja) データ処理装置
JP5480793B2 (ja) プログラマブルコントローラ
JP2006268152A (ja) 集積回路装置
JP5311008B2 (ja) 信号処理プロセッサ及び半導体装置
JP5263498B2 (ja) 信号処理プロセッサ及び半導体装置
JP2003196087A (ja) マイクロコントローラのメモリアドレッシング方法及びページマッピング装置
JP3954159B2 (ja) 同期式ramのアクセス制御回路、データ処理プロセッサ及びその制御方法
US20080301401A1 (en) Processor
JP2004206214A (ja) マイクロプロセッサ
JP2008003867A (ja) マイクロコンピュータ
JPH05250156A (ja) Riscプロセッサ
JP2002182905A (ja) ディジタル信号処理プロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080403

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090706