| 【発明の名称】 |
メモリアクセス調停方法 |
| 【発明者】 |
【氏名】田邨 竜太
【氏名】吉田 雅哉
【氏名】高居 正信
|
| 【要約】 |
【課題】この発明は、データ転送レートを保証する必要がある特定のクライアントに対して、データ転送レートを保証することができるメモリアクセス調停方法を提供することを目的とする。
【解決手段】データ転送レートを保証する必要がある複数のクライアントからのメモリアクセス要求が競合した場合には、各クライアントによって生成されかつ各クライアントに設けられているデータバッファへのデータの蓄積状況を示すバッファ残量に基づいて、アクセス権の調停を行なうようにした。 |
【特許請求の範囲】
【請求項1】 データ転送レートを保証する必要がある複数のクライアントからのメモリアクセス要求が競合した場合には、各クライアントによって生成されかつ各クライアントに設けられているデータバッファへのデータの蓄積状況を示すバッファ残量に基づいて、アクセス権の調停を行なうようにしたメモリアクセス調停方法。 【請求項2】 各クライアントによるメモリアクセスがバーストアクセスによって行なわれる場合には、アクセス権の調停は、各クライアントによって生成されたバッファ残量をバースト内転送量によって補正した後のバッファ残量に基づいて行なわれる請求項1に記載のメモリアクセス調停方法。 【請求項3】 データ転送レートを保証する必要がある複数のクライアントからのメモリアクセス要求が競合した場合には、所定期間毎に、各クライアントによって生成されかつ各クライアントに設けられているデータバッファへのデータの蓄積状況を示すバッファ残量に基づいて、次に処理すべきトランザクションを仮決定するステップ、仮決定したトランザクションが次の所定期間において処理可能か否かを、仮決定したトランザクション処理内容と先行トランザクションの処理内容とに基づいてチェックするステップ、ならびに仮決定したトランザクションが次の所定期間で処理可能であると判定した場合には、その仮決定したトランザクションの処理を次の所定期間から開始し、仮決定したトランザクションが次の所定期間で処理可能ではないと判定した場合には、次の所定期間において、各クライアントによって生成されたバッファ残量に基づいて次に処理すべきトランザクションを仮決定するステップ、を備えているメモリアクセス調停方法。 【請求項4】 各クライアントによるメモリアクセスがバーストアクセスによって行なわれる場合には、次に処理すべきトランザクションの仮決定は、各クライアントによって生成されたバッファ残量をバースト内転送量によって補正した後のバッファ残量に基づいて行なわれる請求項3に記載のメモリアクセス調停方法。
|
【発明の詳細な説明】【0001】 【産業上の利用分野】この発明は、デジタル複写機等におけるメモリアクセス調停方法に関する。 【0002】 【従来の技術】複数のメモリアクセス要求元(以下、クライアントという)からのメモリアクセス要求に対する調停方法として、■固定優先順位による調停方法と、■ラウンドロビン方式による調停方法とがある。 【0003】固定優先順位方式による調停方法およびラウンドロビン方式による調停方法は、共に、メモリアクセス要求が競合した場合に、優先順位の高いクライアントからのメモリアクセス要求を優先させるものであるが、固定優先順位方式による調停方法では優先順位が固定されているのに対し、ラウンドロビン方式による調停方法では調停によってクライアントが選択されると、そのクライアントの優先順位が最下位に回り、それにともなって、当該クライアントの調停時の優先順位より低かった他のクライアントの優先順位が繰り上げられる点で両者は異なっている。 【0004】クライアントが多数存在し、かつその中のクライアントに対して、スキャナからの画像入力、LSU(レーザスキャンユニット)に対する画像出力等のようにデータ転送レートを保証する必要があるようなシステムの場合、上記固定優先順位方式やラウンドロビン方式による調停方法では、特定のクライアントに対してデータ転送レートを保証できなくなる危険性が高い。 【0005】つまり、固定優先順位方式による調停方法では、データ転送レートを保証すべき複数のクライアントに対する優先順位を上位に設定しても、データ転送レートを保証すべきクライアントの中の1つが内部にFIFO等のバッファを有する場合には、そのバッファにデータが充填されるまでの間は、データ転送レートを保証すべき他のライアントのメモリアクセスを阻害することがある。 【0006】また、ラウンドロビン方式による調停方法では、データ転送レートを保証すべきクライアントが要求するデータ転送レートの総和に対してメモリのバンド幅(メモリが有する転送レートのキャパシティ)にあまり余裕がないと、データ転送レートを保証する必要のないクライアントの優先順位が上位に繰り上げられたときにメモリのバンド幅を消費し、データ転送レートを保証すべきクライアントに対して充分なメモリバンド幅を確保できなくなることがある。 【0007】 【発明が解決しようとする課題】この発明は、データ転送レートを保証する必要がある特定のクライアントに対して、データ転送レートを保証することができるメモリアクセス調停方法を提供することを目的とする。 【0008】 【課題を解決するための手段】この発明による第1のメモリアクセス調停方法は、データ転送レートを保証する必要がある複数のクライアントからのメモリアクセス要求が競合した場合には、各クライアントによって生成されかつ各クライアントに設けられているデータバッファへのデータの蓄積状況を示すバッファ残量に基づいて、アクセス権の調停を行なうようにしたことを特徴とする。 【0009】各クライアントによるメモリアクセスがバーストアクセスによって行なわれる場合には、アクセス権の調停は、各クライアントによって生成されたバッファ残量をバースト内転送量によって補正した後のバッファ残量に基づいて行なわれる。 【0010】この発明による第2のメモリアクセス調停方法は、データ転送レートを保証する必要がある複数のクライアントからのメモリアクセス要求が競合した場合には、所定期間毎に、各クライアントによって生成されかつ各クライアントに設けられているデータバッファへのデータの蓄積状況を示すバッファ残量に基づいて、次に処理すべきトランザクションを仮決定するステップ、仮決定したトランザクションが次の所定期間において処理可能か否かを、仮決定したトランザクション処理内容と先行トランザクションの処理内容とに基づいてチェックするステップ、ならびに仮決定したトランザクションが次の所定期間で処理可能であると判定した場合には、その仮決定したトランザクションの処理を次の所定期間から開始し、仮決定したトランザクションが次の所定期間で処理可能ではないと判定した場合には、次の所定期間において、各クライアントによって生成されたバッファ残量に基づいて次に処理すべきトランザクションを仮決定するステップを備えていることを特徴とする。 【0011】各クライアントによるメモリアクセスがバーストアクセスによって行なわれる場合には、次に処理すべきトランザクションの仮決定は、各クライアントによって生成されたバッファ残量をバースト内転送量によって補正した後のバッファ残量に基づいて行なわれる。 【0012】 【発明の実施の形態】以下、図面を参照して、この発明の実施の形態について説明する。 【0013】〔1〕デジタル複写機のメモリ制御回路の周辺回路の構成の説明【0014】図1は、デジタル複写機のメモリ制御回路およびその周辺回路の構成を示している。 【0015】メモリ制御回路1には、画像入出力I/F2、HDDI/F3、SDRAM4、CPU5および画像圧縮伸長回路6が接続されている。 【0016】〔2〕デジタル複写機のメモリ制御回路の構成の説明【0017】図2は、メモリ制御回路1の構成を示している。 【0018】メモリ制御回路1は、複数のインターフェース(I/F)11〜18、画像処理回路(RBUF)19、内部CODEC回路(MXX )20および複数のDMAコントローラ(DMAC)21〜33を備えている。 【0019】この実施の形態では、図示しないスキャナから画像入力I/F(IDIN0 )15に入力される画像データを、DMAコントローラ(DMAC10)21およびSDRAM I/F(SDRAMIF)14によってSDRAM4に格納するためのメモリアクセス要求と、SDRAM4に格納された画像データをDMAコントローラ(DMAC20)23およびSDRAM I/F(SDRAMIF)14によって画像出力I/F(VDOUT0) 17に出力して印字処理を行なうためのメモリアクセス要求とが競合した場合を例にとって、メモリ制御回路1の調停動作について説明する。 【0020】〔3〕画像入力I/F(IDIN0)15に内蔵されているデータバッファおよびその周辺回路の構成の説明【0021】図3は、画像入力I/F(IDIN0) 15に内蔵されているデータバッファおよびその周辺回路の構成を示している。 【0022】画像入力I/F(IDIN0) 15は、データバッファ40と、セレクタ56と、ストア制御信号生成部57と、ロード制御信号および選択制御信号生成部58と、エンコーダ59とを備えている。 【0023】データバッファ40は、画像入力I/F(IDIN0) 15の動作クロックWCK に同期して入力画像データIDIN[31:0]を取込み、システムクロックSCK に同期して、画像データidData[31:0]を出力する。なお、SDRAM I/F(SDRAMIF)14もシステムクロックSCK に同期して動作するものとする。データバッファ40は、15段のワードバッファフラグ生成部41〜55を内蔵しており、15段×32bitのFIFOとして動作し、データがラッチされたワードバッファフラグ生成部の数(データバッファ40に蓄積されているデータ量)をバッファ残量idFlag[3:0] として出力する。 【0024】データバッファ40は、画像入力I/F(IDIN0) 15内部で生成されるデータバッファへの画像データ書き込み制御信号IDACK がアサート("H"レベル) されている期間、動作クロックWCK に同期して、画像データIDINを取り込む。画像データIDINをいずれのワードバッファフラグ生成部41〜55に格納するかは、ストア制御信号生成部57によって生成されるストア制御信号st[14:0]によって制御される。 【0025】ストア制御信号生成部57は、第1カウンタ57aと第1デコーダ57bを備えている。第1カウンタ57aは、画像データ書き込み制御信号IDACK がアサートされる毎にアップカウント動作を行なう。第1カウンタ57aのカウント値は、最大14であり、14を越えると0に戻る。 【0026】第1デコーダ57bは、第1カウンタ57aのカウント値をデコードし、15本のデコード信号を生成する。ストア制御信号生成部57は、画像データ書き込み制御信号IDACK とこれらのテコード信号との論理積を演算して、ストア制御信号st[14:0]を生成する。 【0027】各ワードバッファフラグ生成部41〜55は、それに入力されるストア制御信号st0 〜st14が"H" のときに、入力画像データIDINをラッチする。各ワードバッファフラグ生成部41〜55は、データをラッチすると、データ格納フラグoflag0〜oflag14 をアサートする。そして、各ワードバッファフラグ生成部41〜55は、ラッチされたデータを読み出すと、データ格納フラグoflag0〜oflag14 をネゲートする。 【0028】エンコーダ59は、データ格納フラグoflag0〜oflag14 のうち、アサート状態にあるフラグの数をエンコードして、バッファ残量フラグidFlag[3:0] を生成する。 【0029】データバッファ40は、SDRAM I/F(SDRAMIF)14から送られてくるデータ転送アクノリッジ信号sdAck10 がアサート("H") されている期間、システムクロックSCK に同期して、画像データを出力する。いずれのワードバッファフラグ生成部41〜55に格納されている画像データを出力するかは、選択制御信号生成部58によって生成されるロード制御信号ld[14:0]および選択制御信号Selectによって制御される。 【0030】ロード制御信号および選択制御信号生成部58は、第2カウンタ58aと第2デコーダ58bを備えている。第2カウンタ58aは、データ転送アクノリッジ信号sdAck10 がアサートされる毎にアップカウント動作を行なう。第2カウンタ58aのカウント値は、最大14であり、14を越えると0に戻る。 【0031】第2デコーダ58bは、第2カウンタ58aのカウント値をデコードし、15本のデコード信号を生成する。ロード制御信号および選択制御信号生成部58は、データ転送アクノリッジ信号sdAck10 とこれらのテコード信号との論理積を演算して、ロード制御信号ldを生成する。 【0032】各ワードバッファフラグ生成部41〜55は、それに入力されるロード制御信号ld0 〜ld14が"H" のときに、画像データを読み出すとともに、データ格納フラグoflag0〜oflag14 をネゲートする。 【0033】ロード制御信号および選択制御信号生成部58は、第2カウンタ58aのカウント値を選択制御信号Selectとしてセレクタ56に出力する。セレクタ56は、選択制御信号Selectに対応するワードバッファフラグ生成部41〜55から読み出された画像データDo0 〜Do14を選択して、データバッファ出力信号idData[31:0]として出力する。 【0034】〔4〕画像出力I/F(VDOUT0)17に内蔵されているデータバッファおよびその周辺回路の構成の説明【0035】図4は、画像出力I/F(VDOUT0)17に内蔵されているデータバッファおよびその周辺回路の構成を示している。 【0036】画像出力I/F(VDOUT0)17は、データバッファ60と、セレクタ76と、ストア制御信号生成部77と、エンコーダ78と、ロード制御信号および選択制御信号生成部79を備えている。 【0037】データバッファ60は、システムクロックSCK に同期して、SDRAM I/F(SDRAMIF)14の出力データsdData[31:0]を取込み、画像出力I/F(VDOUT0)17の動作クロックRCK に同期して、画像データODOUT[31:0] を出力する。なお、SDRAM I/F(SDRAMIF)14もシステムクロックSCK に同期して動作するものとする。データバッファ60は、15段のワードバッファフラグ生成部61〜75を内蔵しており、15段×32bitのFIFOとして動作し、データがラッチされていないワードバッファフラグ生成部の数(データバッファ60の空き容量)をバッファ残量odFlag[3:0] として出力する。 【0038】データバッファ60は、SDRAM I/F(SDRAMIF)14から送られてくるデータ転送アクノリッジ信号sdAck20 がアサート("H"レベル) されている期間、システムクロックSCK に同期して、SDRAMIF14の出力データsdDataを取り込む。入力画像データsdDataをいずれのワードバッファフラグ生成部61〜75に格納するかは、ストア制御信号生成部77によって生成されるストア制御信号st[14:0]によって制御される。 【0039】ストア制御信号生成部77は、第1カウンタ77aと第1デコーダ77bを備えている。第1カウンタ77aは、データ転送アクノリッジ信号sdAck20 がアサートされる毎にアップカウント動作を行なう。第1カウンタ77aのカウント値は、最大14であり、14を越えると0に戻る。 【0040】第1デコーダ77bは、第1カウンタ77aのカウント値をデコードし、15本のデコード信号を生成する。ストア制御信号生成部77は、データ転送アクノリッジ信号sdAck20 とこれらのデコード信号との論理積を演算して、ストア制御信号st[14:0]を生成する。 【0041】各ワードバッファフラグ生成部61〜75は、それに入力されるストア制御信号st0 〜st14が"H" のときに、SDRAMIF14の出力データsdDataをラッチする。各ワードバッファフラグ生成部61〜75は、データをラッチすると、データ格納フラグiflag0〜iflag14 をアサートする。そして、各ワードバッファフラグ生成部61〜75は、ラッチされたデータを読み出すと、データ格納フラグiflag0〜iflag14 をネゲートする。 【0042】エンコーダ78は、データ格納フラグiflag0〜iflag14 のうち、ネゲート状態にあるフラグの数をエンコードして、バッファ残量フラグodFlag[3:0] を生成する。 【0043】データバッファ60は、画像出力IF17内部で生成されるデータバッファへの画像データ読み出し制御信号ODACK がアサート("H") されている期間、画像出力IF17の動作クロックRCK に同期して、画像データを出力する。いずれのワードバッファフラグ生成部61〜75に格納されている画像データを出力するかは、ロード制御信号および選択制御信号生成部79によって生成されるロード制御信号ld[14:0]および選択制御信号Selectによって制御される。 【0044】ロード制御信号および選択制御信号生成部79は、第2カウンタ79aと第2デコーダ79bを備えている。第2カウンタ79aは、画像データ読み出し制御信号ODACK がアサートされる毎にアップカウント動作を行なう。第2カウンタ79aのカウント値は、最大14であり、14を越えると0に戻る。 【0045】第2デコーダ79bは、第2カウンタ79aのカウント値をデコードし、15本のデコード信号を生成する。ロード制御信号および選択制御信号生成部79は、画像データ読み出し制御信号ODACK とこれらのテコード信号との論理積を演算して、ロード制御信号ldを生成する。 【0046】各ワードバッファフラグ生成部61〜75は、それに入力されるロード制御信号ld0 〜ld14が"H" のときに、画像データを読み出すとともに、データ格納フラグiflag0〜iflag14 をネゲートする。 【0047】ロード制御信号および選択制御信号生成部79は、第2カウンタ79aのカウント値を選択制御信号Selectとしてセレクタ76に出力する。セレクタ76は、選択制御信号Selectに対応するワードバッファフラグ生成部61〜75から読み出された画像データDo0 〜Do14を選択して、データバッファ出力信号ODOUT[31:0] として出力する。 【0048】〔5〕SDRAM I/F(SDRAMIF) 14の構成の説明【0049】図5は、SDRAM I/F(SDRAMIF) 14の構成を示している。 【0050】SDRAM I/F(SDRAMIF) 14は、図2の各DMAコントローラ21〜33および各I/F11〜13、15〜18とのI/Fを有しているが、ここでは、代表的に、DMAコントローラ(DMAC10)21、DMAコントローラ(DMAC20)23、画像入力I/F(IDIN0 )15、画像出力I/F(VDOUT0)17およびCPU I/F(CPUIF)13とのI/Fのみを図示している。 【0051】図5において、DMAC10 I/F81は、DMAコントローラ(DMAC10) 21および画像入力I/F(IDIN0)15とのI/Fを示し、DMAC20 I/F82は、DMAコントローラ(DMAC20)23および画像出力I/F(VDOUT0)17とのI/Fを示し、CPUIF I/F 83は、CPU I/F(CPUIF) 13とのI/Fを示している。 【0052】SDRAM I/F(SDRAMIF) 14は、上記I/F81、82、83の他に、調停回路84、トランザクションファイル85、コマンド発生回路86、ストローブ発生回路87等を備えている。 【0053】DMAC10 I/F81は、画像入力I/F(IDIN0)15からのバッファ残量フラグidFlagから、バッファ残量補正値(内部信号FlagAdj10)を減じたものを、Flag10として調停回路84に送る。また、DMAC10 I/F81は、ストローブ発生回路87から送られてくるデータ転送アクノリッジ信号sdAck10 に基づいて入力データidDataをマスク( 各ビットごとの論理積) して、Data10を生成する。そして、Data10と、CPUIF I/F 83の出力データDataCpu のビットごとの論理和をとってSDRAM書き込みデータWriteData を生成する。 【0054】DMAC20 I/F82は、画像出力I/F(VDOUT0)17からのバッファ残量フラグodFlagから、バッファ残量補正値(内部信号FlagAdj20)を減じたものを、Flag20としてとして調停回路84に送る。 【0055】CPUIF I/F 83は、CPU5からのSDRAMアクセスに対応する。調停回路84は、各クライアントからのトランザクション処理要求を調停する。トランザクションファイル85は、調停回路84によってSDRAMアクセスを割り当てられたトランザクション処理内容を保持し、調停後のサイクル数をカウントする。 【0056】コマンド発生回路86は、トランザクションファイル85の内容、調停後のサイクル数に基づいて、SDRAM4に対してコマンドを発行する。ストローブ発生回路87は、データ転送アクノリッジ信号sdAck10,20の生成と、SDRAM4のデータバス制御を行なう。 【0057】以下に、各部の主要な入出力信号について説明しておく。 【0058】(1)DMAC10 I/F81、DMAC20 I/F82、CPUIF I/F 83の入出力信号。 ・dm10Req, dm20Req, cpuSdramReq : SDRAM4へのトランザクション処理要求。 ・idFlag:画像入力I/F(IDIN0)のバッファ残量を示すフラグ。 ・odFlag:画像出力I/F(VDOUT0) のバッファ残量を示すフラグ。 ・cpuDir:データ転送の方向(read/write)を指示する信号。 ・dm10Address, dm20Address:DMAアドレス。 【0059】・sdDispatch10, sdDispatch20:SDRAM I/F(SDRAMIF)14によりトランザクション処理が受け付けられたことを示す信号。DMAC10 I/F81、DMAC20I/F82は、調停回路84で生成されたこれらの信号sdDispatch10, sdDispatch20をそのままクライアントに転送する。 【0060】・sdAck10, sdAck20:SDRAM I/F(SDRAMIF)14からのデータ転送アクノリッジ信号。DMAC10 I/F81、DMAC20 I/F82は、ストローブ信号発生回路87から送られてくるこれらの信号sdAck10, sdAck20を、そのまま各クライアントに転送する。 【0061】(2)調停回路84の出力信号 ・Register:調停回路84が割り当てたトランザクション処理を、トランザクションファイル85に登録させるための制御信号。 ・Client:調停回路84によって現時点で最も優先順位が高いと仮決定されたクライアント( DMAコントローラ(DMAC10)21、DMAコントローラ(DMAC20)23、…CPU IF(CPUIF) 13)を示すコード。 【0062】・Bank, Row , Col :上記最優先クライアントから送られてくるアドレスを、バンク番号、ロウアドレスおよびカラムアドレスに分解したアドレス。 ・TransType :上記最優先クライアントのトランザクション処理内容を示すコード(READ,WRITE)。 ・sdDispatch10, sdDispatch20, sdDispatchCpu :調停回路84によって対応するクライアントによるトランザクション処理要求が受け付けられたことを示す信号。 【0063】(3)トランザクションファイル85の出力信号 【0064】・FileState :トランザクションファイル85の内容が有効(VALID) なものか、無効(INVALID) なものかを示す信号。 ・CTransType:現在登録されているトランザクション処理内容を示すコード(READ,WRITE)。 ・CClient :現在登録されているトランザクション処理の要求元を表すコード。 【0065】・CBank, CRow , CCol:現在登録されているトランザクション処理の対象アドレスを、バンク番号、ロウアドレスおよびカラムアドレスに分解したアドレス。 ・CycleCount:トランザクションファイル85にトランザクション処理が登録されてからのサイクル数をカウントするカウンタのカウンタ値を示す信号。 【0066】(4)コマンド発生回路86の出力信号 ・ReadTrigger :ストローブ発生回路87に対してリードデータのタイミングを指定するトリガ信号。 ・WriteTrigger:ストローブ発生回路87に対してライトデータのタイミングを指定するトリガ信号。 ・/CS, /RAS, /CAS, /WE, BA, MA:SDRAM制御信号。 【0067】(5)ストローブ発生回路87の出力信号。 ・sdAck10,20:データ転送アクノリッジ信号。 ・sdData:SDRAM4からのリードデータ。 ・MD:SDRAMIFデータバス。 【0068】〔6〕アクセス調停方法の説明【0069】SDRAM4にアクセスするものとして、次のようなものが挙げられる。 (1)各DMAコントローラ21〜33からのトランザクション処理要求(2)CPU I/F(CPUIF) 13からのトランザクション処理要求(CPUアクセス)【0070】SDRAM I/F(SDRAMIF)14は、これらのアクセス要求を、優先順位に従って調停し、もっとも優先順位の高いものにアクセス権を与える。優先順位は、各クライアント毎に固定されている。優先順位は、次のように予め定められている。 【0071】DMAC10,DMAC11,DMAC20,DMAC21 >CPU アクセス>DMAC7 >DMAC30,DMAC6>DMAC40,DMAC5>DMAC31>DMAC41>DMAC8 >DMAC9【0072】カンマで区切ったものは同一優先順位である。 【0073】同一優先順位のアクセス要求が競合した場合には、SDRAM I/F(SDRAMIF)14は、クライアントのバッファの残量フラグをもとに調停を行なう。ただし、バッファを持たないクライアントに対しては、バッファ残量を特定値と見做す。 【0074】現在処理中のトランザクション処理要求元クライアントから引き続いてトランザクション処理要求が発生している場合には、バッファ残量からバースト長( この例では4)を差し引いたものを基に調停する。また、SDRAM I/F(SDRAMIF)14は、アクセス要求を受けた場合でも、その要求元クライアントのバッファ残量がバースト長に達していない場合には、そのアクセス要求を調停の対象から除外する。 【0075】SDRAM I/F(SDRAMIF)14は、毎サイクル毎に次に処理するトランザクションの候補を上記の手順で仮決定する。さらに、仮決定したトランザクションが次のサイクルで処理可能かどうかをチェックし、処理可能であれば、その仮決定したトランザクションの処理を次のサイクルから実際に開始する(SDRAM4に対するコマンド発行)。 【0076】仮決定したトランザクションが次のサイクルで処理可能であるかどうかは、先行するトランザクションの処理内容、仮決定したトランザクションの処理内容および先行するトランザクション処理開始からの経過時間に基づいて判定する。 【0077】〔7〕アクセス調停方法の具体例の説明【0078】以下、図6に基づいて、DMAコントローラ(DMAC10)21と、DMAコントローラ(DMAC20)23との2つのクライアントの間でアクセス要求が競合した場合についての調停方法について具体的に説明する。 【0079】〔7−1〕ブロック内部信号についての説明【0080】まず、図6に示されているブロック内部信号について説明する。 【0081】・FlagAdj20 : バッファ残量フラグodFlagを補正するためのバッファ残量フラグ補正値。補正値の初期値は0 、DMAコントローラ(DMAC20)23からのトランザクョン処理要求が受付られたことを示す信号sdDispatch20がアサートされる度にバースト長(この例では4)が加算され、データ転送アクノリッジ信号sdAck20 がアサートされている期間、1ずつ減算されていく。ただし、FlagAdj20 の最小値は0である。 【0082】・FlagAdj10 : バッファ残量フラグidFlagを補正するためのバッファ残量フラグ補正値。補正値の初期値は0 、DMAコントローラ(DMAC10)21からのトランザクョン処理要求が受付られたことを示す信号sdDispatch10がアサートされる度にバースト長(この例では”4”)が加算され、データ転送アクノリッジ信号sdAck10 がアサートされている期間、1ずつ減算されていく。ただし、FlagAdj10 の最小値は0である。 【0083】・RClient : 現在登録されているトランザクション処理の要求元を示すコードCClient を、リードデータのタイミングを示す信号ReadTrigger のアサートを条件にラッチした信号。 ・ReadTrigger _ssss : ReadTrigger をシステムクロックSCK の4クロック分遅延してラッチした信号。 【0084】・ReadAck : ReadTrigger _ssssをトリガとして動作する4クロックサイクル幅のワンショット信号。 ・WriteAck : WriteTrigger をトリガとして動作する4クロックサイクル幅のワンショット信号。 【0085】・RRClient : RClientをReadTrigger _ssssアサートを条件にラッチした信号。 ・WClient : CClient をWriteTriggerアサートを条件にラッチした信号。 【0086】〔7−2〕図6の具体例の前提条件についての説明【0087】図6の具体例の前提条件は、以下の通りである。 【0088】(1)SDRAM4にアクセスするクライアントは、DMAコントローラ(DMAC10)21およびDMAコントローラ(DMAC20)23のみであると仮定する。 【0089】(2)画像入力I/F(IDIN0 )15の動作クロック(WCK) 、画像出力I/F(VDOUT0) 17の動作クロックおよびシステムクロック(SCK)は、全て同一クロック( 同一周波数) であるとする。 【0090】(3)画像入力I/F(IDIN0 )15は、3クロックに1回の割合で、データバッファ40にデータを書き込み(IDACK アサート) 、画像出力I/F(VOUT0)17は、2 クロックに1回の割合で、データバッファ60からデータを読み出す(ODACK アサート) ものとする。 【0091】(4)DMAコントローラ(DMAC10)21に設定された転送開始アドレスをAm、DMAコントローラ(DMAC20)23に設定された転送開始アドレスをAnとする。Am、Anはともに、バースト境界かつバンク#0から開始するように、下位4ビットは”0”とする。 【0092】(5)DMAアドレス(dm10Address,dm20Address)は、ワード単位のアドレスを示している。したがって、DMAアドレスは、調停が1回行なわれる毎に、バースト長(4)ずつ増加するものとする。 【0093】〔7−3〕図6のタイミングチャートの説明【0094】時点T1で、DMAコントローラ(DMAC10)21およびDMAコントローラ(DMAC20)23が起動される(dm10Req,dm20Reqアサート) 。また、時点T1で、画像入力I/F(IDIN0 )15が起動され、時点T4で画像出力I/F(VOUT0)17が起動される。 【0095】画像入力I/F(IDIN0)15の起動時点T1においては、データバッファ40は空なので、バッファ残量フラグidFlagは”0”となる。また、画像出力I/F(VDOUT0 )17の起動時点T4においては、データバッファ60は空なので、バッファ残量フラグodFlagは”15”となる。 【0096】バッファ残量補正値FlagAdj10 は、画像入力I/F(IDIN0 )15の起動時点T1で0であり、バッファ残量補正値FlagAdj20 は、画像出力I/F(VDOUT0)17の起動時点T4においては0である。したがって、DMAC10 I/F81から出力されるFlag10(idFlag −FlagAdj10 )は、画像入力I/F(IDIN0)15の起動時点T1で0となり、DMAC20 I/F82から出力されるFlag20(odFlag −FlagAdj20 )は、画像出力I/F(VDOUT0 )17の起動時点T4においては15となる。 【0097】調停回路84は、リクエスト信号(dm10Req 、dm20Req)をアサートしているクライアントの中から、データバッファの残量を示すフラグFlag10、Flag20を参照して、最優先のクライアントを仮決定する。 【0098】画像入力I/F(IDIN0 )15および画像出力I/F(VDOUT0)17の起動直後においては、Flag10:Flag20=0:15であるので、DMAコントローラ(DMAC20)23が最優先のクライアントとして仮決定される。つまり、時点T4において、調停回路84から出力される信号Clientは、DMAC20を表す信号( 図6では"20"と表記) となる。 【0099】時点T4において、トランザクションファイル85から出力される信号FileState は、"INVALID" 状態であるため、調停回路84は、SDRAM4にコマンド発行可能であると判定し、Registerをアサートして、調停されたトランザクション内容をトランザクションファイル85に登録する。 【0100】トランザクション内容をトランザクションファイル85に登録するときには、DMAアドレス(この場合にはdm20Address =An) は、バンクアドレス(Bank)、ロウアドレス(Row) およびカラムアドレス(Col) に分解される。バンクアドレス(Bank)は、DMAアドレス(この場合にはdm20Address)を用いてバンクインターリーブをかけることによって得られる。 【0101】以下の説明において、dm10Address およびdm20Address を総称する際には、dm#Addressと表記することにする。ロウアドレス(Row) は、FC(dm#Address)={ dm#Address[12:6],dm#Address[3:2] }の関数によって、dm#Addressから分解・生成される。カラムアドレス(Col) は、FR(dm#Address)=dm#Address[24:13] の関数によって、dm#Addressから分解・生成される。 【0102】時点T4において、調停回路84は、DMAコントローラ(DMAC20)23からのトランザクション処理要求を受け付けたことを示す信号sdDispatch20をアサートする。この信号sdDispatch20は、信号Registerを1クロックディレイしたものと、信号CClient の内容をデコードした信号との論理積により生成される。sdDispatch20がアサートされている期間は、調停回路84は、調停を禁止する。 【0103】時点T5において、調停回路84は、sdDispatch20のアサートに基づいて、バッファ残量補正値FlagAdj20 に4を加算する。 【0104】sdDispatch20がネゲートされると( 時点T6) 、調停回路84は、調停を再開する。時点T6においては、Flag10:Flag20=1:11であるので、DMAコントローラ(DMAC20)23が再び最優先のクライアントとして仮決定される。 【0105】時点T6においては、トランザクションファイル85から出力される信号FileState が"VALID" 状態となっているため、調停回路84は、先行トランザクション内容との関係で、SDRAM4へのコマンド発行が可能か否かを判定する。先行トランザクション内容は"Read"なので、図7のリード動作先行動作パターンに基づいて、SDRAM4へのコマンド発行が可能か否かを判定する。 【0106】この例では、追従トランザクション内容も"Read"でバンクが非競合なので、図7の(1)のパターンに該当し、新たに仮決定されたトランザクション内容を登録するためには、先行トランザクションが登録されてから、バースト長BL(この例では4クロック)分待機する必要がある。 【0107】なお、先行トランザクション内容が"Write" である場合には、図8のライト動作先行動作パターンに基づいて、SDRAM4へのコマンド発行が可能か否かを判定する。 【0108】図7および図8において、BLはバースト長(この例では4)を、Tarbは調停−コマンド発行レイテンシ(この例では2)を、Trcdは/RASまたは/CASディレイ(この例では2)を、CLは/CASレイテイシ(この例では2)を、Trecはバスリカバリ時間(この例では1)を、Tdalは[WRITA] 時データ入力−[ACT] 発行間隔(この例では3)を、それぞれ示している。 【0109】時点T6において、最優先のクライアントを仮決定しても、上述したように、先行トランザクションが登録されてから、バースト長BL(この例では4クロック)分待機する必要があるので、CycleCountがBLとなる時点T8まで待って、新たに仮決定されたトランザクション内容がトランザクションファイル85に登録される。 【0110】以下、同様な動作が繰り返し行なわれる。 【0111】時点T14 〜時点T19 についての動作について説明する。 【0112】時点T14 において調停回路84は調停を再開するが、時点T14 ではFlag10およびFlag20はともに3であり、バースト長(4)より小さいため、調停は行なわれない。時点T15 では、Flag10:Flag20=4:3であるので、DMAコントローラ(DMAC10)21が最優先のクライアントとして仮決定される。 【0113】時点T15 においては、トランザクションファイル85から出力される信号FileState は、"VALID" 状態であるため、調停回路84は、先行トランザクション内容との関係で、SDRAM4へのコマンド発行が可能か否かを判定する。先行トランザクション内容は"Read"なので、図7のリード動作先行動作パターンに基づいて、SDRAM4へのコマンド発行が可能か否かを判定する。 【0114】この例では、追従トランザクション内容は"Write" でバンクが非競合なので、図7の(2)のパターンに該当し、新たなトランザクションを登録するためには、先行トランザクションが登録されてから、CL+BL+Trec(この例では7クロック)分待機する必要がある。時点T12 から7 クロック先の時点は、T19 となる。したがって、時点T15 で仮決定されたトランザクション内容は、次の時点T16 において登録されない。 【0115】最優先クライアントの仮決定は、トランザクションファイルに登録されるまで、毎サイクル毎に行なわれる。 【0116】時点T16 、T17 においても、Flag10:Flag20=4:3であるので、DMAコントローラ(DMAC10)21が最優先のクライアントとして仮決定されるが、上記と同じ理由で、仮決定されたトランザクション内容は、登録されない。時点T18 においては、Flag10:Flag20=5:4であるので、DMAコントローラ(DMAC10)21が最優先のクライアントとして仮決定される。そして、次の時点時点T19 において、時点T18 で仮決定されたトランザクション内容が登録される。 【0117】時点T25 〜時点T29 についての動作について説明する。 【0118】時点T25 においては調停回路84は調停を再開するが、時点T25 ではFlag10およびFlag20はともに3であり、バースト長(4)より小さいため、調停は行なわれない。時点T26 では、Flag10:Flag20=3:4であるため、DMAコントローラ(DMAC20)23が最優先のクライアントとして仮決定される。この場合、図8の(1)のパターンに該当し、新たなトランザクションを登録するためには、先行トランザクションが登録されてから、BL(この例では4クロック)待機する必要があるので、次の時点T27 において新たなトランザクションは登録されない。 【0119】時点T27 では、Flag10:Flag20=4:4で共に等しいので、予め定められたクライアント、この例ではDMAコントローラ(DMAC10)21が最優先のクライアントとして仮決定される。この場合、図8の(2)のパターンに該当し、新たなトランザクションを登録するためには、先行トランザクションが登録されてから、BL(この例では4)クロック待つ必要があるので、次の時点T28 においては新たなトランザクションは登録されない。 【0120】時点T28 では、Flag10:Flag20=4:5であるので、DMAコントローラ(DMAC20)23が最優先のクライアントとして、仮決定される。この場合、図7の(1)のパターンに該当し、次の時点T29 で、新たなトランザクションが登録される。 【0121】バッファ残量フラグidFlagは、sdAck10 によりレイテンシ1をもって1ずつ減少していき、IDACK によりレイテンシ4をもって1ずつ増加していく。ただし、両信号が同時にアサートされた場合には、バッファ残量フラグidFlagは変化しない。同様に、バッファ残量フラグodFlagは、sdAck20 によりレイテンシ1をもって1ずつ減少していき、ODACK によりレイテンシ4をもって1ずつ増加していく。ただし、両信号が同時にアサートされた場合には、バッファ残量フラグodFlagは変化しない。 【0122】dm10Address は、sdDispath10 がアサートされる毎に4ずつ増加していく。同様に、dm20Address は、sdDispath20 がアサートされる毎に4ずつ増加していく。 【0123】Cyclecount=3 でかつCTranceType ="READ"において、ReadTrigger がアサートされる。Cyclecount=3 でかつCTranceType ="WRITE" において、WriteTriggerがアサートされる。 【0124】ストローブ発生回路87は、ReadAck のアサート時に、RRClientに保持されているクライアントに対して、データ転送アクノリッジ信号sdAck20 をアサートする。また、ストローブ発生回路87は、WriteAckアサート時に、WClient に保持されているクライアントに対して、データ転送アクノリッジ信号sdAck10 をアサートする。 【0125】画像入力I/F(IDIN0)15のデータバッファ40は、sdAck10 のアサート時に、SDRAM I/F(SDRAMIF)14に対してデータを出力する。画像出力I/F(VDOUT)17のデータバッファ60は、sdAck20 のアサート時に、SDRAM I/F(SDRAMIF)14の出力データsdDataを取り込む。 【0126】コマンド発生回路86は、Cyclecount=1の次のサイクルで、SDRAM4に対して、[ACT] コマンドおよびロウアドレスとしてのCRowを発行する。また、コマンド発生回路86は、Cyclecount=3の次のサイクルで、SDRAM4に対して、[READA]/[ERIRA] コマンド( これらのコマンドはCTransTypeによって切り替えられる) およびカラムアドレスとしてのCColを発行する。 【0127】上記実施の形態によれば、データ転送レートを保証する必要があるクライアントからのメモリアクセス要求が競合した場合に、データバッファ40、60のバッファ残量に基づいて調停を行なっているため、データ転送レートを保証する必要があるクライアントに対してもデータを途切れなく転送することが可能となる。 【0128】また、上記実施の形態のように、固定優先順位方式による調停方法とバッファ残量に基づく調停とを組み合わせることにより、クラスタに分けられたクライアント群ごとに優先順位付けを行うことができるとともに、同一クラスタ内の複数のクライアント間では、各クライアントの要求するデータ転送レートに応じてアクセス権を振り分けることができる。 【0129】また、各クライアントによるメモリアクセスがバーストアクセスによって行なわれる場合には、各クライアントによって生成されたバッファ残量をバースト内転送量によって補正した後のバッファ残量に基づいて、アクセス権の調停を行なっているため、SDRAM等のメモリに見られるメモリアクセスレイテンシを隠蔽し、連続してデータ転送を行なうことが可能となる。 【0130】さらに、次に処理すべきトランザクションを仮決定し、仮決定したトランザクションが次のサイクルにおいて処理可能か否かを、調停後のサイクル数、仮決定したトランザクション処理内容および先行トランザクションの処理内容とに基づいて判定しているので、メモリアクセスの効率化を図ることができる。 【0131】 【発明の効果】この発明によれば、データ転送レートを保証する必要がある特定のクライアントに対して、データ転送レートを保証することができるメモリアクセス調停方法が実現する。
|
| 【出願人】 |
【識別番号】000006150 【氏名又は名称】京セラミタ株式会社
|
| 【出願日】 |
平成12年10月25日(2000.10.25) |
| 【代理人】 |
【識別番号】100086391 【弁理士】 【氏名又は名称】香山 秀幸
|
| 【公開番号】 |
特開2002−132707(P2002−132707A) |
| 【公開日】 |
平成14年5月10日(2002.5.10) |
| 【出願番号】 |
特願2000−325189(P2000−325189) |
|