JP3732139B2 - メモリ制御回路及びメモリバスの調停方法 - Google Patents
メモリ制御回路及びメモリバスの調停方法 Download PDFInfo
- Publication number
- JP3732139B2 JP3732139B2 JP2001330155A JP2001330155A JP3732139B2 JP 3732139 B2 JP3732139 B2 JP 3732139B2 JP 2001330155 A JP2001330155 A JP 2001330155A JP 2001330155 A JP2001330155 A JP 2001330155A JP 3732139 B2 JP3732139 B2 JP 3732139B2
- Authority
- JP
- Japan
- Prior art keywords
- data transfer
- data
- circuit
- state
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Memory System (AREA)
Description
【発明の属する技術分野】
この発明は、複数のデータ転送回路が使用権を要求するメモリバスの調停方法及びこの調停方法を使用してメモリバスに接続されたメモリを制御するメモリ制御回路に関わり、特に、動画像処理のようなリアルタイムで行われる処理に対応する必要があるデータ転送回路が複数接続されたメモリバスの調停方法及びこの調停方法を実施するメモリ制御回路に関するものである。
【0002】
【従来の技術】
映像機器において、映像信号処理に用いる映像データを記憶するために、DRAM(Dynamic Random Access Memory)をコアとする、例えば、SDRAM(Synchronous DRAM)などのメモリデバイスを使用することがある。この種のメモリデバイスはデータの書き込み及び読み出しを同一のメモリバスで行うように構成されていることが多い。このようなメモリに対する書き込み要求と読み出し要求が同時に発生する場合には、これらの要求に応答して選択的に時分割でデータ転送を許可するためにメモリバスの調停機構が必要となる。また、書き込み及び読み出し動作を同時に実行することができるデュアルポート・メモリを使用する場合でも、一度に多数のデータ転送回路がメモリバスの使用権を要求する場合などには、やはりメモリバスの調停機構が必要となる。
【0003】
複数のデータ転送回路がメモリバスの使用権を要求する場合におけるメモリバスの調停方法としては、例えば、特許第3033747号公報に示されている方法などがある。この従来の技術を用いて構成したメモリ制御回路の例を図12に示す。
【0004】
図において、63は表示装置に表示すべきグラフィックスデータを生成するグラフィックスデータ生成回路、64はグラフィックスデータ生成回路63が生成したデータを記憶する第1のSDRAM、65はグラフィックスデータ生成回路63が生成したデータを記憶する第2のSDRAM、66は第1のSDRAM64に記憶されたデータを後述する第1の表示装置71に転送する第1の表示コントローラ、67は第2のSDRAM65に記憶されたデータを後述する第2の表示装置72に転送する第2の表示コントローラである。また、図において、68はグラフィックスデータ生成回路63、第1のSDRAM64、第1の表示コントローラ66がデータ、アドレス、コマンド等を送受信するために使用する第1のメモリバス、69はグラフィックスデータ生成回路63、第2のSDRAM65、第2の表示コントローラ67がデータ、アドレス、コマンド等を送受信するために使用する第2のメモリバスである。また、図において、70はグラフィックスデータ生成回路63、第1の表示コントローラ66、第2の表示コントローラ67が実行するデータ転送のタイミングを制御することによって第1のメモリバス68及び第2のメモリバス69の調停を行うバスアービタ、71は第1の表示コントローラ66から転送されたデータを表示する第1の表示装置、72は第2の表示コントローラ67から転送されたデータを表示する第2の表示装置である。
【0005】
図12のような構成を持つ従来のメモリ制御回路の動作は以下の通りである。
【0006】
グラフィックスデータ生成回路63は任意のタイミングで第1の表示装置71及び第2の表示装置72に表示するグラフィックスデータを生成する。グラフィックスデータ生成回路63は第1の表示装置71に表示するグラフィックスデータの生成が完了したときには、グラフィックスデータを第1のSDRAM64に書き込むために、第1のライトリクエスト信号をバスアービタ70に対して送信する。また、第1の表示コントローラ66は、第1の表示装置71を駆動する垂直同期信号及び水平同期信号を発生する同期信号発生回路を内蔵している。第1の表示コントローラ66は、その内部で発生した水平同期信号の基準エッジが有効表示期間内に検出されるたびに、第1のSDRAM64に記憶されているデータを読み出して第1の表示装置71に転送するために、第1のリードリクエスト信号をバスアービタ70に対して送信する。
【0007】
同様にして、グラフィックスデータ生成回路63は第2の表示装置72に表示するグラフィックスデータの生成が完了したときには、グラフィックスデータを第2のSDRAM65に書き込むために、第2のライトリクエスト信号をバスアービタ70に対して送信する。また、第2の表示コントローラ67は、第2の表示装置72を駆動する垂直同期信号及び水平同期信号を発生する同期信号発生回路を内蔵している。第2の表示コントローラ67は、その内部で発生した水平同期信号の基準エッジが有効表示期間内に検出されるたびに、第2のSDRAM65に記憶されているデータを読み出して第2の表示装置72に転送するために、第2のリードリクエスト信号をバスアービタ70に対して送信する。一般に、第1の表示コントローラ66が発生する同期信号の周期と第2の表示コントローラ67が発生する同期信号の周期は異なる。
【0008】
バスアービタ70は、グラフィックスデータ生成回路63が発生した第1及び第2のライトリクエスト信号、第1の表示コントローラ66が生成した第1のリードリクエスト信号、第2の表示コントローラ67が生成した第2のリードリクエスト信号を受信する。バスアービタ70は、受信した4種類のリクエスト信号に応答して、データ転送の実行を許可する4種類のアクノリッジ信号を発生する。すなわち、第1のライトリクエスト信号が送信されているときに第1のメモリバス68においてデータ転送が行われていなければ、バスアービタ70はグラフィックスデータ生成回路63に対して第1のライトアクノリッジ信号を送信し、第2のライトリクエスト信号が送信されているときに第1のメモリバス68においてデータ転送が行われていなければ、バスアービタ70は第1の表示コントローラ66に対して第2のライトアクノリッジ信号を送信する。また、第1のリードリクエスト信号が送信されているときに第2のメモリバス69においてデータ転送が行われていなければ、バスアービタ70はグラフィックスデータ生成回路63に対して第1のリードアクノリッジ信号を送信し、第2のリードリクエスト信号が送信されているときに第2のメモリバス69においてデータ転送が行われていなければ、バスアービタ70は第2の表示コントローラ67に対して第2のリードアクノリッジ信号を送信する。
【0009】
グラフィックスデータ生成回路63は、第1のライトアクノリッジ信号を受信したときには、内部で生成したデータを第1のメモリバス68を使用して第1のSDRAM64に転送し、データの転送が完了するとバスアービタ70に対して第1のライトリクエスト信号の送信を停止する。また、第1の表示コントローラ66は、第1のリードアクノリッジ信号を受信したときには、1水平期間に表示する分のデータを第1のメモリバス68を使用して第1のSDRAM64から第1の表示コントローラ66に転送し、データの転送が完了するとバスアービタ70に対して第1のリードリクエスト信号の送信を停止する。さらに、第1のSDRAM64から第1の表示コントローラ66に転送されたデータは、第1の表示コントローラ66が内部で発生した水平及び垂直同期信号とともに第1の表示装置71に転送される。
【0010】
同様にして、グラフィックスデータ生成回路63は、第2のライトアクノリッジ信号を受信したときには、生成したデータを第2のメモリバス69を使用して第2のSDRAM65に転送し、データの転送が完了するとバスアービタ70に対して第2のライトリクエスト信号の送信を停止する。また、第2の表示コントローラ67は、第2のリードアクノリッジ信号を受信したときには、1水平期間に表示する分のデータを第2のメモリバス69を使用して第2のSDRAM65から第2の表示コントローラ67に転送し、データの転送が完了するとバスアービタ70に対して第2のリードリクエスト信号の送信を停止する。さらに、第2のSDRAM65から第2の表示コントローラ67に転送されたデータは、第2の表示コントローラ67が内部で発生した水平及び垂直同期信号とともに第2の表示装置72に転送される。
【0011】
なお、データ転送に際しては、グラフィックスデータ生成回路63、第1の表示コントローラ66、及び第2の表示コントローラ67は、データ転送に必要なアドレスとコマンドを発生し、発生したアドレスとコマンドを第1のメモリバス68又は第2のメモリバス69を使用して、それぞれ第1のSDRAM64又は第2のSDRAM65に送信する。
【0012】
図13は、バスアービタ70がリクエスト信号及びアクノリッジ信号を用いて、第1のメモリバス68を調停する様子を示したタイミングチャートである。図では、第1の表示コントローラ66が内部で発生する水平同期信号を負極性とし、リクエスト信号及びアクノリッジ信号をいずれもハイアクティブの信号としている。
【0013】
図13のタイミングtaで水平同期信号の基準エッジである立ち下がりエッジが検出されると、第1の表示コントローラ66は第1のリードリクエスト信号をハイレベルにすることによって、第1の表示コントローラ66から第1のSDRAM64へのデータ転送の実行をバスアービタ70に対して要求する。このとき、タイミングtaにおいてグラフィックスデータ生成回路63が第1のメモリバス68を使用してデータ転送を実行中である場合には、バスアービタ70は第1のリードアクノリッジ信号をローレベルに保持し、第1の表示コントローラ66にデータ転送を実行させないようにする。
【0014】
次に、タイミングtbでグラフィックスデータ生成回路63がデータ転送の実行を終了すると、グラフィックスデータ生成回路63は第1のライトリクエスト信号をローレベルにし、これに応答してバスアービタ70は第1のライトアクノリッジ信号をローレベルにするとともに、第1のリードアクノリッジ信号をハイレベルにすることによって、第1の表示コントローラ66にデータ転送を開始させる。
【0015】
グラフィックスデータ生成回路63がタイミングtcで再び第1のライトリクエスト信号を発生したときに、第1の表示コントローラ66がデータ転送を実行中であれば、第1の表示コントローラ66がデータ転送を終了するタイミングtdまで、バスアービタ70は第1のライトアクノリッジ信号をローレベルに保持し、グラフィックスデータ生成回路63にデータ転送を実行させないようにする。
【0016】
ここで、グラフィックスデータ生成回路63で生成されたデータの量は必ずしも一定量とは限らないので、転送すべきデータの量が少ないときには、グラフィックスデータ生成回路63がデータ転送を終了したときに、第1のリードリクエスト信号がローレベルのままになっていることがある。図13に示したタイミングteがこの場合に相当し、このとき第1のメモリバス68は第1のライトリクエスト信号又は第1のリードリクエスト信号のいずれかがハイレベルとなるまで(例えば、図13におけるteからtfまでの期間)データ転送が実行されないアイドル状態となっている。したがって、タイミングtfで第1のリードリクエスト信号がハイレベルになると、バスアービタ70は直ちに第1のリードアクノリッジ信号をハイレベルにし、第1の表示コントローラ66にデータ転送を開始させるように動作する。特に、第1のメモリバス68がアイドル状態のときに、第1のライトリクエスト信号と第1のリードリクエスト信号が同時にハイレベルとなる可能性があるときには、バスアービタ70をいずれかのリクエスト信号に優先的に応答させるように予め決めている。
【0017】
第2のライトリクエスト信号、第2のリードリクエスト信号、第2のライトアクノリッジ信号、及び第2のリードアクノリッジ信号を用いた第2のメモリバス69の調停も上記の第1のメモリバス68の調停とまったく同様にして行われる。このようにして、1つのメモリバスにつき、メモリを転送先及び転送元とする2種類のデータ転送の調停を行うことができる。
【0018】
【発明が解決しようとする課題】
上記のような従来のメモリ制御回路では、1つのメモリバスに接続されるデータ転送回路は必ず2個であるという前提のもとにメモリバスの調停が行われる。したがって、従来のメモリ制御回路では、データの最終的な転送先である表示装置と同数のメモリデバイスが必要となり、特に表示装置の個数が多いときには多くのメモリデバイスを使用しなければならないという問題がある。一般に、電気回路の部品点数が増加すると、基板面積やコストなどが増大するためにこれは望ましいことではない。
【0019】
この発明は、上記のような従来技術の課題を解決するためになされたもので、複数のデータ転送回路が使用権を要求するメモリバスにおいて、各データ転送回路が任意のタイミングでデータ転送を要求する場合であっても、破綻のないメモリバスの調停を可能にするメモリバスの調停方法及びメモリ制御回路を得ることを目的とする。
【0020】
【課題を解決するための手段】
参考例のメモリ制御回路は、
メモリバス及び前記メモリバスに接続されたメモリを制御するメモリ制御回路であって、
前記メモリに転送するデータ及び前記メモリから転送されたデータの少なくとも一方を一時的に記憶しておく複数のバッファと、
前記複数のバッファのそれぞれに記憶されている前記データの数に対応するカウント値を持つ複数のカウンタと、
前記メモリバスを使用して、前記メモリと前記複数のバッファとの間でデータ転送を実行する複数のデータ転送回路と、
前記複数のデータ転送回路のそれぞれと関連付けられた複数の状態のなかのいずれかを現状態とし、前記現状態は予め定められた遷移条件に従って遷移するステートマシンを内蔵するバスアービタとを備え、
(1) 前記複数のデータ転送回路のそれぞれは、少なくとも1つ以上の前記複数のカウンタのカウント値に基づいて前記データ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、
(2) 前記ステートマシンの現状態に関連付けられたデータ転送回路がリクエスト信号を送信していれば、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送回路に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、
(3) 前記複数のデータ転送回路のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数又は少なくとも1つ以上の前記複数のカウンタのカウント値のいずれかに基づいて実行中の前記データ転送を終了し、
(4) 前記ステートマシンの現状態に関連付けられたデータ転送回路が前記リクエスト信号を送信していない場合又は実行中の前記データ転送を終了した場合のいずれかの場合には、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送回路に前記アクノリッジ信号を送信せず、前記ステートマシンは次状態に遷移し、
(5)前記処理(1)から(4)までを繰り返すように構成されたものである。
【0021】
また、参考例のメモリ制御回路は、前記処理(2)において、前記ステートマシンの現状態に関連付けられたデータ転送回路がリクエスト信号を送信している場合であっても、前記現状態以外の状態に関連付けられた特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合には、前記ステートマシンは次状態に遷移し、前記バスアービタは前記現状態に関連付けられた前記データ転送回路にアクノリッジ信号を送信しないように構成されたものである。
【0022】
また、参考例のメモリ制御回路は、前記ステートマシンの現状態に対応する次状態が複数存在する場合には、特定の1つ以上のデータ転送回路が送信するリクエスト信号に基づいて次状態が決定されるように構成されたものである。
【0023】
参考例のメモリ制御回路は、
メモリバス及び前記メモリバスに接続されたメモリを制御するメモリ制御回路であって、
前記メモリに転送するデータ及び前記メモリから転送されたデータの少なくとも一方を一時的に記憶しておく複数のバッファと、
前記複数のバッファのそれぞれに記憶されている前記データの数に対応するカウント値を持つ複数のカウンタと、
前記メモリバスを使用して、前記メモリと前記複数のバッファとの間でデータ転送を実行する複数のデータ転送回路と、
シフトレジスタで構成された命令キューを内蔵するバスアービタとを備え、
(1)前記複数のデータ転送回路のそれぞれは、少なくとも1つ以上の前記複数のカウンタのカウント値に基づいてデータ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、
(2)前記バスアービタが前記複数のデータ転送回路から前記リクエスト信号を受信した場合には、前記リクエスト信号を送信したデータ転送回路に関連付けられたデータ転送命令を命令キューの最後尾に登録し、
(3)前記バスアービタは、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、
(4) 前記複数のデータ転送回路のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数又は少なくとも1つ以上の前記複数のカウンタのカウント値のいずれかに基づいて実行中の前記データ転送を終了し、
(5)前記データ転送回路がデータ転送を終了した場合には、前記データ転送回路に関連付けられたデータ転送命令を命令キューから削除するとともに、後段の命令キューの内容を1段前にシフトし、
(6)前記処理(1)から(5)までを繰り返すように構成されたものである。
【0024】
また、参考例のメモリ制御回路は、請求項4における前記処理(1)において前記データ転送回路がリクエスト信号を送信している場合であっても、前記リクエスト信号を送信しているデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合又は前記特定の1つ以上のデータ転送回路に関連付けられたデータ転送命令がすでに命令キューに登録されている場合のいずれかの場合には、前記処理(2)を実行せず、前記リクエスト信号を送信しているデータ転送回路のデータ転送命令を前記命令キューに登録しないように構成されたものである。
【0025】
また、参考例のメモリ制御回路は、前記データ転送命令が命令キューの先頭に登録されている場合であっても、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合又は前記特定の1つ以上のデータ転送回路に関連付けられているデータ転送命令がすでに前記命令キューに登録されている場合のいずれかの場合には、前記処理(3)を実行せず、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路に対してアクノリッジ信号を送信しないように構成されたものである。
【0026】
請求項1に関するメモリ制御回路は、
メモリバス及び前記メモリバスに接続されたメモリを制御するメモリ制御回路であって、
前記メモリに転送するデータ及び前記メモリから転送されたデータの少なくとも一方を一時的に記憶しておく複数のバッファと、
前記複数のバッファのそれぞれに記憶されている前記データの数に対応するカウント値を持つ複数のカウンタと、
前記メモリバスを使用して、前記メモリと前記複数のバッファとの間でデータ転送を実行する複数のデータ転送回路と、
バスアービタとを備え、
前記バスアービタが、
シフトレジスタで構成された命令キューと、
前記複数のデータ転送回路のそれぞれと関連付けられた複数の状態のなかのいずれか又は命令キューと関連付けられた状態を現状態とし、一つのデータ転送回路に関連付けられた状態、又は、一つの命令キューと関連付けられた状態が終了すると、次のデータ転送回路又は次の命令キューに関連付けられた状態に遷移し、かつ、各状態が循環するように遷移するステートマシンとを内蔵し、
前記ステートマシンが持つ状態の1つを前記命令キューに関連付け、
前記複数のデータ転送回路の一部が前記ステートマシンが持つ状態に関連付けられ、前記複数のデータ転送回路の残りが前記命令キューに関連付けられ、
(1)前記複数のデータ転送回路のそれぞれは、各データ転送回路のバッファに記憶されているデータの数に対する前記複数のカウンタのカウント値が所定カウント値以上の場合に、前記データ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、
(2)前記ステートマシンの現状態に関連付けられたデータ転送回路がリクエスト信号を送信していれば、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送回路に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、
(3)前記複数のデータ転送回路のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数に基づいて実行中の前記データ転送を終了し、
(4)前記ステートマシンの現状態に関連付けられたデータ転送回路が前記リクエスト信号を送信していない場合、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送回路に前記アクノリッジ信号を送信せず、前記ステートマシンは次状態に遷移し、
(5)前記ステートマシンが前記命令キューに関連付けられた状態に遷移した場合にのみ、前記命令キューに登録されているデータ転送命令の一部又は全部を前記命令キューの先頭から順に実行した後に前記ステートマシンは次状態に遷移し、
(6)前記処理(1)から(5)までを繰り返すように構成されたものである。
【0027】
また、請求項2に関するメモリ制御回路は、請求項1における前記処理(5)において、
(5−1)前記バスアービタが前記命令キューに関連づけられたデータ転送回路のいずれかから前記リクエスト信号を受信した場合には、前記リクエスト信号を送信したデータ転送回路に関連付けられたデータ転送命令を命令キューの最後尾に登録し、
(5−2)前記バスアービタは、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、
(5−3)前記命令キューに関連づけられたデータ転送回路のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数に基づいて実行中の前記データ転送を終了し、
(5−4)前記データ転送回路がデータ転送を終了した場合には、前記データ転送回路に関連付けられたデータ転送命令を命令キューから削除するとともに、後段の命令キューの内容を1段前にシフトし、
(5−5)前記処理(5−1)から(5−4)までを1回以上実行するように構成されたものである。
【0028】
また、請求項3に関するメモリ制御回路は、請求項2において、前記処理(5−1)において前記データ転送回路がリクエスト信号を送信している場合であっても、前記リクエスト信号を送信しているデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合、前記処理(5−2)を実行せず、前記リクエスト信号を送信しているデータ転送回路のデータ転送命令を前記命令キューに登録しないように構成されたものである。
【0029】
また、請求項4に関するメモリ制御回路は、請求項2又は3において、前記データ転送命令が命令キューの先頭に登録されている場合であっても、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合、前記処理(5−3)を実行せず、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路に対してアクノリッジ信号を送信しないように構成されたものである。
【0030】
また、請求項5に関するメモリ制御回路は、請求項1から4までのいずれかにおいて、前記ステートマシンの現状態に関連付けられた命令キューにデータ転送命令が登録されている場合であっても、前記ステートマシンの現状態以外の状態に関連付けられた特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合には、前記ステートマシンは次状態に遷移し、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路にアクノリッジ信号を送信しないように構成されたものである。
【0031】
また、請求項6に関するメモリ制御回路は、前記データ転送回路がデータ転送を実行している途中であっても、前記データ転送を実行しているデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号の送信を開始した場合には、前記バスアービタは前記データ転送を実行しているデータ転送回路に対して、実行中のデータ転送を終了させるように命令するように構成されたものである。
【0032】
また、請求項7に関するメモリ制御回路は、前記複数のカウンタは、前記複数のバッファのそれぞれに対する読み出し命令、前記バッファに対する書き込み命令、前記メモリに対する読み出し命令、前記メモリに対する書き込み命令のいずれかを組み合わせて使用することによって、前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を保持するように構成されたものである。
【0033】
また、請求項8に関するメモリ制御回路は、前記複数のカウンタのそれぞれは、前記複数のバッファに対する読み出し命令あるいは書き込み命令が発行されるたびに反転するパルスを発生する反転パルス生成回路と、前記反転パルス生成回路が発生した前記パルスのエッジを検出する微分回路とを備え、前記複数のカウンタのそれぞれは、前記微分回路の検出結果、前記メモリに対する読み出し命令、前記メモリに対する書き込み命令のいずれかを組み合わせて使用することによって、前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を保持するように構成されたものである。
【0034】
また、請求項9に関するメモリ制御回路は、前記複数のデータ転送回路のそれぞれは、前記複数のカウンタのカウント値が設定値以上になったとき及び設定値以下になったときのいずれかのときにリクエスト信号を発生するように構成されたものである。
【0035】
また、参考例のメモリ制御回路は、前記複数のデータ転送回路のそれぞれは、前記複数のカウンタのカウント値が設定値以上になったとき及び設定値以下になったときのいずれかのときにデータ転送を終了するように構成されたものである。
【0036】
また、参考例のメモリ制御回路は、前記複数のデータ転送回路のうちの、前記メモリを転送元とし前記バッファを転送先とするデータ転送回路において、転送先である前記バッファに記憶されている全てのデータが外部信号に基づいて消去された場合には、所定の期間にわたって、前記データ転送回路が1回のデータ転送で転送するデータの数を所定の期間外よりも少なくするか又は前記バスアービタが前記データ転送回路が送信するリクエスト信号に応答してアクノリッジ信号を送信する頻度を所定の期間外よりも少なくするように構成されたものである。
【0037】
参考例のメモリバスの調停方法は、
メモリバスを使用して、メモリと複数のバッファとの間でデータ転送を実行する複数のデータ転送手段と、
前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を持つ複数のカウンタと、
前記複数のデータ転送手段のそれぞれと関連付けられた複数の状態のなかのいずれかを現状態とし、前記現状態は予め定められた遷移条件に従って遷移するステートマシンを内蔵するバスアービタと
を用いて前記データ転送手段によるメモリバスの使用権を調停する方法であって、
(1) 前記複数のデータ転送手段のそれぞれは、少なくとも1つ以上の前記複数のカウンタのカウント値に基づいて前記データ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、
(2) 前記ステートマシンの現状態に関連付けられたデータ転送手段がリクエスト信号を送信していれば、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送手段に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、
(3) 前記複数のデータ転送手段のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数又は少なくとも1つ以上の前記複数のカウンタのカウント値のいずれかに基づいて実行中の前記データ転送を終了し、
(4) 前記ステートマシンの現状態に関連付けられたデータ転送手段が前記リクエスト信号を送信していない場合又は実行中の前記データ転送を終了した場合のいずれかの場合には、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送手段に前記アクノリッジ信号を送信せず、前記ステートマシンは次状態に遷移し、
(5) 前記処理(1)から(4)までを繰り返すようにした方法である。
【0038】
また、参考例のメモリバスの調停方法は、前記処理(2)において、前記ステートマシンの現状態に関連付けられたデータ転送手段がリクエスト信号を送信している場合であっても、前記現状態以外の状態に関連付けられた特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合には、前記ステートマシンは次状態に遷移し、前記バスアービタは前記現状態に関連付けられた前記データ転送手段にアクノリッジ信号を送信しないようにした方法である。
【0039】
また、参考例のメモリバスの調停方法は、前記ステートマシンの現状態に対応する次状態が複数存在する場合には、特定の1つ以上のデータ転送手段が送信するリクエスト信号に基づいて次状態が決定されるようにした方法である。
【0040】
参考例のメモリバスの調停方法は、
メモリバスを使用して、メモリと複数のバッファとの間でデータ転送を実行する複数のデータ転送手段と、
前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を持つ複数のカウンタと、
シフトレジスタで構成された命令キューを内蔵するバスアービタと
を用いて前記データ転送手段によるメモリバスの使用権を調停する方法であって、
(1) 前記複数のデータ転送手段のそれぞれは、少なくとも1つ以上の前記複数のカウンタのカウント値に基づいてデータ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、
(2) 前記バスアービタが前記複数のデータ転送手段から前記リクエスト信号を受信した場合には、前記リクエスト信号を送信したデータ転送手段に関連付けられたデータ転送命令を命令キューの最後尾に登録し、
(3) 前記バスアービタは、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、
(4) 前記複数のデータ転送手段のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数又は少なくとも1つ以上の前記複数のカウンタのカウント値のいずれかに基づいて実行中の前記データ転送を終了し、
(5) 前記データ転送手段がデータ転送を終了した場合には、前記データ転送手段に関連付けられたデータ転送命令を命令キューから削除するとともに、後段の命令キューの内容を1段前にシフトし、
(6) 前記処理(1)から(5)までを繰り返すようにした方法である。
【0041】
また、参考例のメモリバスの調停方法は、前記処理(1)において前記データ転送手段がリクエスト信号を送信している場合であっても、前記リクエスト信号を送信しているデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合又は前記特定の1つ以上のデータ転送手段に関連付けられたデータ転送命令がすでに命令キューに登録されている場合のいずれかの場合には、前記処理(2)を実行せず、前記リクエスト信号を送信しているデータ転送手段のデータ転送命令を前記命令キューに登録しないようにした方法である。
【0042】
また、参考例のメモリバスの調停方法は、前記データ転送命令が命令キューの先頭に登録されている場合であっても、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合又は前記特定の1つ以上のデータ転送手段に関連付けられているデータ転送命令がすでに前記命令キューに登録されている場合のいずれかの場合には、前記処理(3)を実行せず、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段に対してアクノリッジ信号を送信しないようにした方法である。
【0043】
請求項10に関するメモリバスの調停方法は、
メモリバスを使用して、メモリと複数のバッファとの間でデータ転送を実行する複数のデータ転送手段と、
前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を持つ複数のカウンタと、
バスアービタと
を用いて前記データ転送手段によるメモリバスの使用権を調停する方法であって、
前記バスアービタが、
シフトレジスタで構成された命令キューと、
前記複数のデータ転送手段のそれぞれと関連付けられた複数の状態のなかのいずれか又は命令キューと関連付けられた状態を現状態とし、一つのデータ転送手段に関連付けられた状態、又は、一つの命令キューと関連付けられた状態が終了すると、次のデータ転送手段又は次の命令キューに関連付けられた状態に遷移し、かつ、各状態が循環するように遷移するステートマシンとを内蔵し、
前記ステートマシンが持つ状態の1つを前記命令キューに関連付け、
前記複数のデータ転送手段の一部が前記ステートマシンが持つ状態に関連付けられ、前記複数のデータ転送手段の残りが前記命令キューに関連付けられ、
(1) 前記複数のデータ転送手段のそれぞれは、各データ転送手段のバッファに記憶されているデータの数に対する前記複数のカウンタのカウント値が所定カウント値以上の場合に、前記データ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、
(2) 前記ステートマシンの現状態に関連付けられたデータ転送手段がリクエスト信号を送信していれば、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送手段に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、
(3) 前記複数のデータ転送手段のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数に基づいて実行中の前記データ転送を終了し、
(4) 前記ステートマシンの現状態に関連付けられたデータ転送手段が前記リクエスト信号を送信していない場合、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送手段に前記アクノリッジ信号を送信せず、前記ステートマシンは次状態に遷移し、
(5) 前記ステートマシンが前記命令キューに関連付けられた状態に遷移した場合にのみ、前記命令キューに登録されているデータ転送命令の一部又は全部を前記命令キューの先頭から順に実行した後に前記ステートマシンは次状態に遷移し、
(6) 前記処理(1)から(5)までを繰り返すようにした方法である。
【0044】
また、請求項11に関するメモリバスの調停方法は、
前記処理(5)において、
(5−1) 前記バスアービタが前記命令キューに関連づけられたデータ転送手段のいずれかから前記リクエスト信号を受信した場合には、前記リクエスト信号を送信したデータ転送手段に関連付けられたデータ転送命令を命令キューの最後尾に登録し、
(5−2) 前記バスアービタは、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、
(5−3) 前記命令キューに関連づけられたデータ転送手段のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数に基づいて実行中の前記データ転送を終了し、
(5−4) 前記データ転送手段がデータ転送を終了した場合には、前記データ転送手段に関連付けられたデータ転送命令を命令キューから削除するとともに、後段の命令キューの内容を1段前にシフトし、
(5−5) 前記処理(5−1)から(5−4)までを1回以上実行するようにした方法である。
【0045】
また、請求項12に関するメモリバスの調停方法は、前記処理(5−1)において前記データ転送手段がリクエスト信号を送信している場合であっても、前記リクエスト信号を送信しているデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合、前記処理(5−2)を実行せず、前記リクエスト信号を送信しているデータ転送手段のデータ転送命令を前記命令キューに登録しないようにした方法である。
【0046】
また、請求項13に関するメモリバスの調停方法は、前記データ転送命令が命令キューの先頭に登録されている場合であっても、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合、前記処理(5−3)を実行せず、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段に対してアクノリッジ信号を送信しないようにした方法である。
【0047】
また、請求項14に関するメモリバスの調停方法は、前記ステートマシンの現状態に関連付けられた命令キューにデータ転送命令が登録されている場合であっても、前記ステートマシンの現状態以外の状態に関連付けられた特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合には、前記ステートマシンは次状態に遷移し、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段にアクノリッジ信号を送信しないようにした方法である。
【0048】
また、請求項15に関するメモリバスの調停方法は、前記データ転送手段がデータ転送を実行している途中であっても、前記データ転送を実行しているデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号の送信を開始した場合には、前記バスアービタは前記データ転送を実行しているデータ転送手段に対して、実行中のデータ転送を終了させるように命令するようにした方法である。
【0049】
また、請求項16に関するメモリバスの調停方法は、前記複数のカウンタは、前記複数のバッファのそれぞれに対する読み出し命令、前記バッファに対する書き込み命令、前記メモリに対する読み出し命令、前記メモリに対する書き込み命令のいずれかを組み合わせて使用することによって、前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を保持するようにした方法である。
【0050】
また、請求項17に関するメモリバスの調停方法は、
前記複数のカウンタのそれぞれは、前記複数のバッファに対する読み出し命令あるいは書き込み命令が発行されるたびに反転するパルスを発生し、この発生した前記パルスのエッジを検出し、
前記複数のカウンタのそれぞれは、前記検出されたパルスのエッジ、前記メモリに対する読み出し命令、前記メモリに対する書き込み命令のいずれかを組み合わせて使用することによって、前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を保持するようにした方法である。
【0051】
また、請求項18に関するメモリバスの調停方法は、前記複数のデータ転送手段のそれぞれは、前記複数のカウンタのカウント値が設定値以上になったとき及び設定値以下になったときのいずれかのときにリクエスト信号を発生するようにした方法である。
【0052】
また、参考例のメモリバスの調停方法は、前記複数のデータ転送手段のそれぞれは、前記複数のカウンタのカウント値が設定値以上になったとき及び設定値以下になったときのいずれかのときにデータ転送を終了するようにした方法である。
【0053】
また、参考例のメモリバスの調停方法は、
前記複数のデータ転送手段のうちの、前記メモリを転送元とし前記バッファを転送先とするデータ転送手段において、
転送先である前記バッファに記憶されている全てのデータが外部信号に基づいて消去された場合には、所定の期間にわたって、前記データ転送手段が1回のデータ転送で転送するデータの数を所定の期間外よりも少なくするか又は前記バスアービタが前記データ転送手段が送信するリクエスト信号に応答してアクノリッジ信号を送信する頻度を所定の期間外よりも少なくするようにした方法である。
【0054】
【発明の実施の形態】
実施の形態1.
図1はこの発明の実施の形態1であるメモリ制御回路の構成(本発明によるメモリバスの調停方法を実施するための構成)示す図である。図において、1は映像データを記憶するSDRAM、2はメモリ制御回路、3はSDRAM1とメモリ制御回路2を接続し、SDRAM1とメモリ制御回路2が互いにデータ、アドレス、コマンドを送受信するために使用する外部メモリバスである。
【0055】
メモリ制御回路2の内部構成は以下の通りである。図において、4はSDRAM1に対する直接のインターフェイスを持つメモリインターフェイス、5はメモリ制御回路2の内部でデータ、アドレス、コマンド等の転送に使用する内部メモリバス、6は各データ転送回路が実行するデータ転送のタイミングを制御することによって内部メモリバス5の調停を行うバスアービタである。
【0056】
また、図において、7はSDRAM1に転送するデータを一時的に記憶する第1のバッファ、8は第1のバッファ7に記憶されているデータの数をカウントする第1のカウンタ、9はデータ及び制御信号を入力する第1の入力端子、10は第1の入力端子9から入力されたデータを随時第1のバッファ7に書き込み、バスアービタ6から内部メモリバス5を使用したデータ転送の実行が許可されたときには、第1のバッファ7からデータを読み出してメモリインターフェイス4を経由してSDRAM1に転送する第1のデータ転送回路である。
【0057】
同様に、図において、11はSDRAM1に転送するデータを一時的に記憶する第2のバッファ、12は第2のバッファに記憶されているデータの数をカウントする第2のカウンタ、13はデータ及び制御信号を入力する第2の入力端子、14は第2の入力端子13から入力されたデータを随時第2のバッファ11に書き込み、バスアービタ6から内部メモリバス5を使用したデータ転送の実行が許可されたときには、第2のバッファ11からデータを読み出してメモリインターフェイス4を経由してSDRAM1に転送する第2のデータ転送回路である。
【0058】
さらに、図において、15はSDRAM1から転送されたデータを一時的に記憶する第3のバッファ、16は第3のバッファに記憶されているデータの数をカウントする第3のカウンタ、17はデータ及び制御信号を出力する第1の出力端子、18はバスアービタ6から内部メモリバス5を使用したデータ転送の実行が許可されたときにはSDRAM1からメモリインターフェイス4を経由して第3のバッファ15にデータを書き込み、必要に応じて第3のバッファ15からデータを読み出して第1の出力端子から出力する第3のデータ転送回路である。
【0059】
同様に、図において、19はSDRAM1から転送されたデータを一時的に記憶する第4のバッファ、20は第4のバッファに記憶されているデータの数をカウントする第4のカウンタ、21はデータ及び制御信号を出力する第2の出力端子、22はバスアービタ6から内部メモリバス5を使用したデータ転送の実行が許可されたときにはSDRAM1からメモリインターフェイス4を経由して第4のバッファ19にデータを書き込み、必要に応じて第4のバッファ19からデータを読み出して第2の出力端子21から出力する第4のデータ転送回路である。SDRAM1に転送するデータを一時的に記憶する第1のバッファ7、第2のバッファ11、第3のバッファ15及び第4のバッファ19としてはFIFO型(First-In First-Out:先入れ先出し型)のバッファを用いるのが最も一般的であるが、FIFO型に限らず、LIFO型(Last-In First-Out:後入れ先出し型)であってもよいし、全くランダムアクセスを行うバッファであってもよい。
【0060】
また、図において、23はバスアービタ6から内部メモリバス5の使用権が許可されたときには、SDRAM1に対してSDRAM1内部の状態を初期化する一連の初期化コマンドを発行するSDRAM初期化コマンド発生回路であり、24はバスアービタ6から内部メモリバス5の使用権が許可されたときには、SDRAM1に対してリフレッシュコマンドを発行するリフレッシュコマンド発生回路である。
【0061】
図1に示した実施の形態1であるメモリ制御回路の動作は以下の通りである。第1の入力端子9及び第2の入力端子13から入力されるデータは映像データであるとし、第1の入力端子9及び第2の入力端子13から入力される制御信号は有効なデータを示すためのデータイネーブル信号及び垂直同期信号であるとする。データイネーブル信号は入力されるデータがSDRAM1に転送するべき有効なデータであることを示す信号である。データイネーブル信号がイネーブル状態であるときに第1の入力端子9及び第2の入力端子13から入力されたデータは、それぞれ第1のデータ転送回路10及び第2のデータ転送回路14によって、第1のバッファ7及び第2のバッファ11に書き込まれる。
【0062】
同様に、第1の出力端子17及び第2の出力端子21から出力されるデータは映像データであるとし、第1の出力端子17及び第2の出力端子21から出力される制御信号は第3のデータ転送回路18及び第4のデータ転送回路22の内部で発生したデータイネーブル信号及び垂直同期信号であるとする。第1の出力端子17及び第2の出力端子21から出力されるデータイネーブル信号は出力されるデータがSDRAM1から転送されてきた有効なデータであることを示す信号である。データイネーブル信号がイネーブル状態であるときに、第3のバッファ15及び第4のバッファ19は、それぞれ第3のデータ転送回路18及び第4のデータ転送回路22によってデータを読み出され、第1の出力端子17及び第2の出力端子21から出力される。
【0063】
第1のカウンタ8は、第1のデータ転送回路10が第1のバッファ7にデータを1つ書き込むたびにカウント値に1加算し、第1のバッファ7からデータが1つ読み出されるたびにカウント値から1減算する。そして、第1のカウンタ8のカウント値が32以上になると、第1のデータ転送回路10はバスアービタ6に対して内部メモリバス5及び外部メモリバス3を使用したデータ転送の開始を要求する第1のリクエスト信号を送信する。第1のカウンタ8に1減算させる条件は、SDRAM1に対してライトコマンドを発行するたびとしてもよい。
【0064】
また、第1のカウンタ8は第1の入力端子9から入力される垂直同期信号の基準エッジを検出すると、第1のバッファ7に記憶されているデータを全て消去するとともに、第1のカウンタ8のカウント値を0にリセットする。これは、1垂直期間毎に第1のバッファ7及び第1のカウンタ8の状態をリセットすることによって、例えば、第1のバッファ7がオーバーフローするなどの誤動作が発生した場合でも、次の垂直期間では正常な状態に復帰できるようにするための措置である。誤動作が発生しないことが保証されている場合には、このような措置は特に必要ない。ここで、第1のデータ転送回路10がデータを転送中に垂直同期信号の基準エッジを検出した場合には、空であるはずの第1のバッファ7から無効なデータをSDRAM1に転送してしまうことを防ぐために、実行中のデータ転送をただちに中断するか、実行中のデータ転送が終了してから第1のバッファ7に記憶されているデータを消去するようにする。
【0065】
第2のカウンタ12も第1のカウンタ8と同様な方法で第2のバッファ11に記憶されているデータの数をカウントし、第2のデータ転送回路14は第2のカウンタ12のカウント値が32以上になるとバスアービタ6に対して第2のリクエスト信号を送信する。
【0066】
一方、第3のカウンタ16は、第3のデータ転送回路18がSDRAM1に対してリードコマンドを発行するたびにカウント値から1減算し、第3のバッファ15からデータが1つ読み出されるたびにカウント値に1加算する。そして、第3のカウンタ16のカウント値が32以上になると、第3のデータ転送回路18はバスアービタ6に対して内部メモリバス5及び外部メモリバス3を使用したデータ転送の開始を要求する第3のリクエスト信号を送信する。第3のカウンタ16が1減算する条件は、第3のバッファ15にデータを1つ書き込むたびとしてもよい。
【0067】
このとき、第3のカウンタ16がカウントしているのは、正確には第3のバッファ15の全データ容量から第3のバッファ15に記憶されているデータの数を引いた値であるが、この値は第3のバッファ15に記憶されているデータの数と一対一に対応しているので、実質的に第3のカウンタ16は第3のバッファ15に記憶されているデータ数をカウントしていると見なすことができる。もちろん第3のカウンタ16の加減算の方向を逆にして第1のカウンタ8と同様なカウント方法を用いてもよい。この場合は、第3のデータ転送回路18が第3のリクエスト信号を出力するカウント値が第3のバッファ15の全データ容量から32を引いた値に変える必要がある。
【0068】
また、第3のカウンタ16は第3のデータ転送回路18の内部で発生した垂直同期信号の基準エッジを検出すると、第3のバッファ15に記憶されているデータを全て消去するとともに、第3のカウンタ16のカウント値を第3のバッファ15の全データ容量と等しい値にする。これは、例えば、第3のバッファ15がアンダーフローするなどの誤動作が発生した場合でも、次の垂直期間では正常な状態に復帰できるようにするための措置である。ただし、第3のデータ転送回路18がデータを転送中に垂直同期信号の基準エッジを検出した場合には、本来は異なる垂直期間に表示されるべきデータが誤って同じ垂直期間に表示されないようにするため、実行するデータ転送をただちに中断して所定の期間が経過するまで第3のバッファ15に対する書き込み動作を禁止するか、実行中のデータ転送が終了して所定の期間が経過してから第3のバッファ15に記憶されているデータを消去するようにする。なお、いずれの場合にも、所定の期間が経過するのを待つのは、一般にSDRAM1に対してリードコマンドを発行してから第3のバッファ15にデータが実際に書き込まれるまでに一定の潜時が存在するためであり、データ転送を中断又は終了した後も第3のバッファ15にデータが書き込まれることがあるためである。
【0069】
第4のカウンタ20も第3のカウンタ16と同様な方法で第4のバッファ19に記憶されているデータの数をカウントし、第4のデータ転送回路22は第4のカウンタ20のカウント値が32以上になるとバスアービタ6に対して第4のリクエスト信号を送信する。
【0070】
メモリインターフェイス4は内部メモリバス5で用いられるコマンド、アドレスの形式と、外部メモリバス3で用いられるアドレス、コマンドの形式を相互に変換するために設けられる回路である。このような変換が必要でないときには、メモリインターフェイス4は不要であり、内部メモリバス5及び外部メモリバス3を明確に区別する必要もなくなる。なお、内部メモリバス5と外部メモリバス3においてアドレス、コマンドの形式が異なっていてもそれぞれの機能は変わらないので、内部メモリバス5を調停することはSDRAM1に直接接続された外部メモリバス3を調停することと等価である。
【0071】
バスアービタ6はステートマシンを内蔵しており、その状態遷移図の一例を図2に示す。メモリ制御回路2が動作を開始したときにはステートマシンの状態は図2の「初期状態」になっている。
【0072】
一般のSDRAMデバイスはデータ転送を実行する前に内部の状態を初期化する必要があるため、バスアービタ6に内蔵されているステートマシンは適当なタイミングで「SDRAM初期化」の状態に遷移するとともにSDRAM初期化コマンド発生回路23に内部メモリバス5の使用権を許可する。これに応答して、SDRAM初期化コマンド発生回路23は、一連の初期化コマンドを発生し、適当なタイミングでSDRAMの初期化が終了すると初期化が終了したことをバスアービタ6に対して通知する。SDRAMの初期化を開始するタイミングは外部から与えられるものであってもよいし、「初期状態」を一定時間保った後に自動的に「SDRAM初期化」に遷移するなどとしてもよい。
【0073】
SDRAM初期化コマンド発生回路23によってバスアービタ6にSDRAM1の初期化が終了したことが通知されると、ステートマシンは「データ転送1」の状態に遷移する。このとき第1のデータ転送回路10が第1のリクエスト信号を送信していれば、バスアービタ6は第1のデータ転送回路10に対して第1のアクノリッジ信号を送信する。逆に、このとき第1のデータ転送回路10が第1のリクエスト信号を送信していなければ、ステートマシンはただちに次状態「データ転送2」に遷移する。第1のデータ転送回路10に対して第1のアクノリッジ信号を出力した場合には、ステートマシンは第1のデータ転送回路10からデータ転送の終了が通知されたときに次状態「データ転送2」に遷移する。
【0074】
さらに、ステートマシンが「データ転送2」の状態に遷移したときに第2のデータ転送回路14が第2のリクエスト信号を送信していれば、バスアービタ6は第2のデータ転送回路14に対して第2のアクノリッジ信号を送信する。また、このとき第2のデータ転送回路14が第2のリクエスト信号を送信していなければ、ステートマシンはただちに次状態「データ転送3」に遷移する。第2のデータ転送回路14に対して第2のアクノリッジ信号を出力した場合には、ステートマシンは第2のデータ転送回路14からデータ転送の終了が通知されたときに次状態「データ転送3」に遷移する。
【0075】
以下同様にして、「データ転送3」の状態は第3のデータ転送回路18に、「データ転送4」の状態は第4のデータ転送回路22にそれぞれ関連付けられており、「データ転送3」の状態に遷移したときに第3のデータ転送回路18が第3のリクエスト信号を送信していれば、第3のリクエスト信号に応答して第3のデータ転送回路18に対して第3のアクノリッジ信号が送信され、「データ転送4」の状態に遷移したときに第4のデータ転送回路22が第4のリクエスト信号を送信していれば、第4のリクエスト信号に応答して第4のデータ転送回路22に対して第4のアクノリッジ信号が送信される。
【0076】
「データ転送4」の次状態は「リフレッシュ」であり、「リフレッシュ」の状態に遷移したときには、バスアービタ6は自動的にリフレッシュコマンド発生回路24に対して第5のアクノリッジ信号を送信し、内部メモリバス5の使用権を許可する。その後、バスアービタ6がリフレッシュコマンド発生回路24からリフレッシュ動作の終了を通知されると、ステートマシンは「データ転送1」の状態に戻る。これ以降は上述した状態遷移にしたがって循環的にデータ転送及びリフレッシュ動作が行われる。
【0077】
一方、第1のデータ転送回路10はバスアービタ6から第1のアクノリッジ信号を受信すると、第1のバッファ7からメモリインターフェイス4を経由して32個のデータをSDRAM1に転送し、適当なタイミングでバスアービタ6にデータ転送の終了を通知する。同様にして、第2のデータ転送回路14はバスアービタ6から第2のアクノリッジ信号を受信すると、第2のバッファ11から32個のデータをメモリインターフェイス4を経由してSDRAM1に転送し、やはり適当なタイミングでバスアービタ6にデータ転送の終了を通知する。
【0078】
また、第3のデータ転送回路18はバスアービタ6から第3のアクノリッジ信号を受信すると、SDRAM1からメモリインターフェイス4を経由して32個のデータを第3のバッファ15に書き込み、適当なタイミングでバスアービタ6にデータ転送の終了を通知する。同様にして、第4のデータ転送回路22はバスアービタ6から第4のアクノリッジ信号を受信すると、SDRAM1からメモリインターフェイス4を経由して32個のデータを第4のバッファ19に書き込み、やはり適当なタイミングでバスアービタ6にデータ転送の終了を通知する。
【0079】
なお、実施の形態1ではデータ転送に際して、各データ転送回路はデータ転送に必要なアドレス、コマンドも同時に発生し、内部メモリバス5及び外部メモリバス3を使用してSDRAM1に送信するものとする。内部メモリバス5にアドレス、コマンドを送信できるデータ転送回路は同時に1つしか存在しないため、個々のデータ転送回路がアドレス、コマンドを発生するのではなく、データ転送に必要なアドレス、コマンドを発生する回路をデータ転送回路とは別に1つだけ設けてもよい。
【0080】
リクエストコマンド発生回路24はバスアービタ6から第5のアクノリッジ信号を受信すると、リフレッシュコマンドを2回発生し、適当なタイミングでバスアービタ6にリフレッシュ動作の終了を通知する。リフレッシュ動作ではコマンドのみを内部メモリバス5及び外部メモリバス3に送信し、アドレスやデータは通常送信されない。
【0081】
図3はバスアービタ6がリクエスト信号及びアクノリッジ信号を用いて、内部メモリバス5を調停する様子を示したタイミングチャートである。図には、ステートマシンを駆動するクロック信号、バスアービタ6に内蔵されているステートマシンの状態、5種類のリクエスト信号及び5種類のアクノリッジ信号の波形を示している。実施の形態1では、ステートマシンの状態、5種類のリクエスト信号及びアクノリッジ信号は必ずクロック信号の立ち上がりエッジで変化するとする。ここで、第5のリクエスト信号は、リフレッシュコマンド発生回路24がバスアービタ6に対して送信するリクエスト信号である。図では、リクエスト信号とアクノリッジ信号は全てハイアクティブであるとする。また、図では、ステートマシンの状態に関して「SDRAM初期化」を「INI」、「データ転送1」を「D1」、「データ転送2」を「D2」、「データ転送3」を「D3」、「データ転送4」を「D4」、「リフレッシュ」を「REF」と略記している。
【0082】
図におけるタイミングtAで、バスアービタ6に内蔵されているステートマシンが「SDRAM初期化」から「データ転送1」の状態に遷移したとする。タイミングtAでは第1のリクエスト信号がハイレベルになっているため、バスアービタ6は第1のアクノリッジ信号をハイレベル(H)にし、第1のデータ転送回路10に対してデータ転送の開始を許可する。その後、タイミングtBで第1のデータ転送回路10はSDRAM1に32個のデータを転送し終わったことを示すために、第1のリクエスト信号をローレベル(L)に変化させる。このように、実施の形態1では、図示を簡単にするために、データ転送の開始要求、実行、終了を表す信号をリクエスト信号に多重しているが、これに限らずリクエスト信号はデータ転送の開始要求のみを表すとし、データ転送が実行中であること、及びデータ転送が終了したことを別に2種類の信号を設けることによって示してもよい。
【0083】
バスアービタ6がタイミングtCで第1のリクエスト信号がローレベルであることを検出すると、バスアービタ6は第1のアクノリッジ信号をローレベルにするととともに、ステートマシンの状態は「データ転送2」に遷移する。第1のアクノリッジ信号はデータ転送の開始を許可するための信号であるから必ずしもタイミングtCでローレベルにする必要はなく、適当なタイミングでローレベルにしてもよい。タイミングtCで第1のカウンタ8のカウント値が32未満であれば、第1のリクエスト信号は図3に示したようにローレベルのままである。タイミングtCでは第2のリクエスト信号がローレベルであるため、第2のアクノリッジ信号はローレベルのままであり、次のタイミングtDでステートマシンはただちに「データ転送3」の状態に遷移する。なお、データ転送を行っていない第3のデータ転送回路18がタイミングtCで第3のリクエスト信号をローレベルにしているのは、垂直同期信号の基準エッジが検出され、第3のカウンタ16のカウント値が前述した動作にしたがって0にリセットされたためである。
【0084】
タイミングtDでは第3のリクエスト信号がローレベルであるため、第3のアクノリッジ信号はローレベルのままであり、次のタイミングtEでステートマシンはただちに「データ転送4」に遷移する。
【0085】
タイミングtEでは第4のリクエスト信号がハイレベルであるため、第4のアクノリッジ信号はハイレベルとなり、第4のアクノリッジ信号に応答して第4のデータ転送回路22はデータ転送を開始する。その後、タイミングtFで第4のデータ転送回路22はSDRAM1から32個のデータを転送し終わったことを示すために、第4のリクエスト信号をローレベルに変化させる。
【0086】
タイミングtGでバスアービタ6が第4のリクエスト信号がローレベルであることを検出すると、バスアービタ6は第4のアクノリッジ信号をローレベルにするとともに、ステートマシンの状態は「リフレッシュ」に遷移する。タイミングtGで第4のカウンタ20のカウント値が32以上であれば、第4のリクエスト信号は図3に示したように、タイミングtGでただちにハイレベルに変化する。また、状態「リフレッシュ」ではバスアービタ6は第5のリクエスト信号のレベルに関わらず第5のアクノリッジ信号をハイレベルに変化させ、リフレッシュコマンド発生回路24にリフレッシュ動作を開始させる。その後、タイミングtHでリフレッシュコマンド発生回路24は2回分のリフレッシュ動作が終了したことを示すために、第5のリクエスト信号をローレベルに変化させる。状態「リフレッシュ」では必ずリフレッシュコマンド発生回路24に内部メモリバス5の使用権が許可されるために、第5のリクエスト信号は実質的にリフレッシュ動作の終了のみを示す信号となっている。このため、第5のリクエスト信号は次のタイミングtIでただちにハイレベルに復帰する。
【0087】
タイミングtIでバスアービタ6が第5のリクエスト信号がローレベルであることを検出すると、バスアービタ6は第5のアクノリッジ信号をローレベルにするとともに、ステートマシンの状態は「データ転送1」に遷移する。タイミングtIでは第1のリクエスト信号がハイレベルであるために、バスアービタ6は第1のアクノリッジ信号をハイレベルにすることによって、第1のデータ転送回路10にデータ転送を開始させる。
【0088】
以下、同様にして5種類のリクエスト信号に応答して、5種類のアクノリッジ信号のレベルが変化するとともにステートマシンの状態が遷移していく。
【0089】
メモリ制御回路2を上記のように構成することによって、各入力端子及び出力端子から入出力されるデータイネーブル信号が任意のタイミングでイネーブル状態となったとしても、データをメモリ制御回路2と外部回路との間でデータイネーブル信号に同期させて転送することができる。このことを以下に説明する。
【0090】
いま、各データ転送回路はアクノリッジ信号を受信してから32個のデータを転送し終わったことをバスアービタ6に通知するまでに、いずれも38クロックサイクルの時間が必要であるとする。また、リフレッシュコマンド発生回路24は第5のアクノリッジ信号を受信してから2回のリフレッシュコマンドを発生し終わったことをバスアービタ6に通知するまでに、8クロックサイクルの時間が必要であるとする。ここで、1クロックサイクルはSDRAM1を駆動するクロックの周期を基準としたものである。SDRAM1は、1クロックサイクルにつき1個のデータの書き込み又は読み出しが可能である。
【0091】
さらに、第1の入力端子9及び第2の入力端子13には有効表示期間において5クロックサイクルにつき1個のデータがデータイネーブル信号とともに入力されるとし、第1の出力端子17及び第2の出力端子21からは有効表示期間において5クロックサイクルにつき1個のデータがデータイネーブル信号とともに出力されるとする。第1の入力端子9及び第2の入力端子13から入力されたデータは、それぞれ第1のバッファ7及び第2のバッファ11に書き込まれる。また、第1の出力端子17及び第2の出力端子21から出力されるデータはそれぞれ第1のバッファ7及び第2のバッファ11から読み出されたデータである。
【0092】
このとき、メモリ制御回路2とSDRAM1との間で転送できるデータは160クロックサイクルあたり最大128個(=(160クロックサイクル−8クロックサイクル)×(32個/38クロックサイクル))であり、メモリ制御回路2と各入力端子及び出力端子を介して外部回路との間で転送されるデータは160クロックサイクルあたりに換算するとやはり128個であるから、単位時間あたりにメモリ制御回路2と外部回路との間で転送されるデータの数はメモリ制御回路2とSDRAM1との間で転送できるデータの最大数に等しいことがわかる。
【0093】
したがって、例えば、第1のバッファ7に注目すると、第1のバッファ7に記憶されているデータの数は少なくとも時間とともに際限なく増加することはないので、第1のバッファ7の全データ容量がある程度の大きさであれば、第1のデータ転送回路10は第1のバッファ7をオーバーフローさせることなく第1の入力端子9から入力されたデータを全てSDRAM1に書き込むことができる。これは第2のバッファ11についても同様である。
【0094】
また、第3のバッファ15についても、第3のバッファ15に記憶されているデータの数は少なくとも時間とともに際限なく減少することはないので、有効表示期間の直前において相当数のデータが第3のバッファ15に記憶されていれば、第3のデータ転送回路18は第3のバッファ15をアンダーフローさせることなく、第1の出力端子17から出力すべきデータをSDRAM1から読み出すことができる。これは第4のバッファ19についても同様である。
【0095】
ここで、具体的な例を挙げて各バッファの全データ容量が有限でよいことを示す。仮に、ステートマシンの状態が「データ転送1」に遷移した時点で第1のカウンタ8のカウント値が32以上であったとすると、バスアービタ6は第1のリクエスト信号に応答して第1のデータ転送回路10に第1のアクノリッジ信号を送信するので、第1のデータ転送回路10は38クロックサイクルの時間をかけて32個のデータをSDRAM1に転送する。
【0096】
第1のデータ転送回路10がデータ転送を終了した後で、第2のデータ転送回路14、第3のデータ転送回路18、第4のデータ転送回路22がいずれもデータ転送を行ったとすると、ステートマシンの状態が一巡して再び「データ転送1」の状態に戻るまでには160クロックサイクルの時間が必要となる。この間に第1の入力端子9を介して第1のバッファ7に書き込まれるデータの数は32個であるから、第1のカウンタ8のカウント値はステートマシンの状態が「データ転送1」に遷移する直前において32以上になっており、第1のデータ転送回路10は第1のアクノリッジ信号に応答して再びデータ転送を実行することになる。
【0097】
同様にして、第2のカウンタ12、第3のカウンタ16、及び第4のカウンタ20についても160クロックサイクルの間にカウント値が32増加するとともにデータ転送によって32減少するから、ステートマシンの状態が一巡する間に各カウンタのカウント値は同じ値に戻ることになる。したがって、ある時点でステートマシンの状態が一巡する間に全てのデータ転送回路がデータ転送を実行したとすると、その後はステートマシンの状態が一巡する間に全てのデータ転送回路が必ず1回だけデータ転送を実行することになる。データ転送回路がデータ転送を行わない場合にはカウンタのカウント値は時間とともに増加するから、ある程度の時間が経過すると各カウンタのカウント値は必ず32以上になり、ステートマシンの状態が一巡する間に各データ転送回路は必ず1回だけデータ転送を実行することになる。このように各バッファの全データ容量をある程度の大きさにすることによって、バッファのオーバーフロー及びアンダーフローを防ぎつつデータ転送を行うことが可能である。
【0098】
ここでさらに、前述のタイミングとは異なるタイミングで各入出力端子を介して外部回路との間でデータが転送される場合について考える。すなわち、第1のバッファ7には10クロックサイクルにつき3個のデータが書き込まれるとし、第2のバッファ11には16クロックサイクルにつき1個のデータが書き込まれるとし、第3のバッファ15からは10クロックサイクルにつき3個のデータが読み出されるとし、第4のバッファ19からは16クロックサイクルにつき1個のデータが読み出されるとする。
【0099】
このとき、メモリ制御回路2と外部回路との間で転送されるデータは160クロックサイクルあたり116個(=(160クロックサイクル)×(3個/10クロックサイクル+1個/16クロックサイクル+3個/10クロックサイクル+1個/16クロックサイクル))であるから、これは同じ期間でSDRAM1との間で転送できるデータの最大数である128よりも少ないことがわかる。したがって、この場合にも各バッファの全データ容量をある程度の大きさにすることによって、オーバーフローやアンダーフローを発生させることなくデータ転送を行うことができる。これを図4を用いて説明する。
【0100】
図4はステートマシンの状態遷移が発生した時点における経過時間、4個のカウンタのカウント値、及び5種類のアクノリッジ信号のレベルを示したものである。なお、経過時間は1クロックサイクルを1単位として示している。図4では各カウンタのカウント値がいずれも32となり、ステートマシンの状態が「データ転送1」に遷移した時点の経過時間を0としている。
【0101】
ステートマシンの状態が「データ転送1」に遷移する直前に第1のカウンタ8のカウント値が32であれば、バスアービタ6は第1のリクエスト信号に応答して第1のアクノリッジ信号をハイレベルに変化させ、第1のデータ転送回路10は38クロックサイクルの間に32個のデータを第1のバッファ7からSDRAM1に転送する。「データ転送1」への状態遷移が発生してから3クロックサイクル後、6クロックサイクル後、10クロックサイクル後という周期でデータが第1のバッファ7に書き込まれるとすると、「データ転送2」への状態遷移が発生する直前には第1のカウンタのカウント値は11になっている。同様にして、「データ転送1」への状態遷移が発生してから16クロックサイクル後に第2のバッファ11にデータが書き込まれるとすると、「データ転送2」への状態遷移が発生する直前には第2のカウンタのカウント値は34になっている。第3のカウンタ16及び第4のカウンタ20についても同様であり、「データ転送2」への状態遷移が発生する直前にはカウント値はそれぞれ43及び34になっている。
【0102】
このようにして、ステートマシンの状態が4巡して「データ転送1」の状態になったときには、図4に示したように、418クロックサイクルが経過しており、第1のカウンタ8、第2のカウンタ12、第3のカウンタ16、第4のカウンタ20のカウント値はそれぞれ29,26,29,26といずれも経過時間が0の時点よりも小さくなっている。したがって、この場合にも、バスアービタ6は各バッファをオーバーフロー又はアンダーフローさせることなく、各データ転送回路が実行するデータ転送のタイミングを適切に制御できることがわかる。
【0103】
ここで、図4に示した5種類のアクノリッジ信号の状態を見ると、ステートマシンの状態が4巡する間に実行されたデータ転送の回数は、第1のデータ転送回路10及び第3のデータ転送回路18に関しては4回ずつ、第2のデータ転送回路14及び第4のデータ転送回路22に関しては1回ずつとなっている。すなわち、各入力端子及び出力端子から単位時間あたりに入出力されるデータの数がいずれも5クロックサイクルに1個であったときには、各データ転送回路はステートマシンが一巡する間に必ず1回だけ実行されていたのに対して、各入力端子及び出力端子から単位時間あたりに入出力されるデータの数が異なる場合には、単位時間あたりに入出力端子から入出力されるデータの数が多いデータ転送回路ほど、バスアービタ6によってデータ転送が頻繁に許可されていることがわかる。
【0104】
このように、バスアービタ6は、より多くのデータを転送する必要があるデータ転送回路に対して、より多くのデータ転送の機会を与えることが可能になっている。また、1つのデータ転送回路にデータ転送を許可する頻度は、単位時間あたりに入力端子及び出力端子から入出力されるデータの量に応じて自動的に調節される。単位時間あたりに外部回路との間で転送されるデータの数がSDRAM1との間で転送できるデータの最大数を超えない限りは、データが外部回路との間で入出力されるタイミングは任意であってよく、また、入出力タイミングは上記した二つの例のように必ずしも周期的である必要はなく、単位時間あたりに入出力されるデータの数は時間的とともに変化してもよい。さらに、単位時間あたりに外部回路との間で転送されるデータの数がSDRAM1との間で転送できるデータの最大数を瞬間的に超えたとしても、ある程度長い時間で平均したときにSDRAM1との間で転送できるデータの最大数を超えていなければ、各バッファの全データ容量をある程度大きくすることによって、各バッファをオーバーフロー又はアンダーフローさせることなくデータ転送を行うことができる。
【0105】
なお、実施の形態1では特に各データ転送回路がリクエスト信号を送信するカウント値を同じ32という値にしたが、32個には限らず、また、必要に応じてデータ転送回路ごとに異なる値にしてもよい。また、実施の形態1では特に各データ転送回路が一度に転送するデータ数を同じ32個としたが、32個には限らず、また、必要に応じてデータ転送回路ごとに異なる値にしてもよい。
【0106】
さらに、実施の形態1ではステートマシンの状態が変化するときにリクエスト信号のレベルを検出してアクノリッジ信号を送信するかしないかを決定するようにしたが、リクエスト信号のレベルを検出するタイミングを、これよりも1クロック又は数クロック前後にずらしてもよい。
【0107】
実施の形態2.
実施の形態2は、実施の形態1であるメモリ制御回路と同じ構成のメモリ制御回路を用い、各バッファに記憶されているデータのカウント方法のみが異なる場合についての例である。以下、実施の形態1とは異なる部分についてのみ説明する。
【0108】
実施の形態1では、第1のバッファ7にデータが書き込まれるタイミングをSDRAM1を駆動するクロックの周期を基準として、例えば、5クロックサイクルに1回などとした。しかし、実際の回路ではこのような場合には第1のバッファ7の書き込みに用いるクロックの周波数を、SDRAM1を駆動するクロックの周波数の5分の1にする方が回路の消費電力が少なくなるために有利である。
【0109】
このとき、第1のバッファ7の読み出しに用いるクロックの周波数を、SDRAM1へのデータ転送を高速に行うために、SDRAM1を駆動するクロックと同じクロックを用いるとすると、第1のバッファ7の書き込み動作で用いるクロックと読み出し動作で用いるクロックが異なるために、そのままでは同期回路で第1のバッファ7に記憶されているデータの数をカウントすることはできない。
【0110】
そこで、実施の形態2では第1のデータ転送回路10の内部に、図5に示す回路を内蔵させる。
【0111】
図において、25は第1の入力端子9から入力されたデータが第1のバッファ7に書き込むべき有効なデータであることを示すデータイネーブル信号を入力するデータイネーブル信号入力端子、26は第1のバッファ7の書き込み動作に用いるライトクロックを入力するライトクロック入力端子、27は第1のバッファ7の読み出し動作に用いるリードクロックを入力するリードクロック入力端子である。また、図において、28はデータイネーブル信号がイネーブル状態になるたびに反転するパルスを生成する反転パルス生成回路、29は反転パルス生成回路28が発生した反転パルスのエッジを検出する同期微分回路、30は同期微分回路29の出力を第1のカウンタ8に供給するデータイネーブル信号出力端子である。
【0112】
反転パルス生成回路28には、データイネーブル信号入力端子25から入力されたデータイネーブル信号と後述する第1のD−フリップフロップ32の出力との排他的論理和を出力する第1のXORゲート31、及び第1のXORゲート31の出力をライトクロックに同期させて出力する第1のD−フリップフロップ32が内蔵されている。
【0113】
また、同期微分回路29には、第1のD−フリップフロップ32の出力をリードクロックに同期させる第2のD−フリップフロップ33、第2のD−フリップフロップ33の出力をリードクロックの1周期に相当する期間だけ遅延させる第3のD−フリップフロップ34、及び第2のD−フリップフロップ33の出力と第3のD−フリップフロップ34の出力の排他的論理和をデータイネーブル信号出力端子30に出力する第2のXORゲート35が内蔵されている。
【0114】
ここで、データイネーブル信号入力端子25から入力されるデータイネーブル信号は第1の入力端子9から入力されたデータイネーブル信号と同じ波形であるとし、データイネーブル信号はハイアクティブの信号であるとする。すなわち、第1の入力端子9から入力されたデータイネーブル信号がハイレベルであるときに、第1の入力端子9から入力されたデータが第1のバッファ7に書き込まれるとする。
【0115】
また、第1の入力端子9から入力されるデータ及びデータイネーブル信号は第1のバッファ7の書き込み動作に用いるライトクロックに同期しているとし、第1のバッファ7の読み出し動作に用いるリードクロックは前述したようにSDRAM1を駆動するクロックと同じ信号であるとし、このクロックはライトクロックの周波数よりも2.5倍だけ高い周波数であるとする。
【0116】
第1のカウンタ8は、データイネーブル信号出力端子30から出力されるデータイネーブル信号がハイレベルになるたびにカウント値に1加算し、第1のバッファ7からデータを読み出すたび、又はSDRAM1に対してライトコマンドを発行するたびにカウント値を1減算することによって、第1のバッファ7に記憶されているデータの数をリードクロックのみを用いてカウントすることができる。これを図6を用いて説明する。
【0117】
図には、リードクロック及びライトクロック、データイネーブル信号入力端子25から入力されるデータイネーブル信号、第1のD−フリップフロップ32の出力信号、第2のD−フリップフロップ33の出力信号、第3のD−フリップフロップ34の出力信号、データイネーブル信号出力端子30から出力されるデータイネーブル信号、ハイレベルになるたびに第1のバッファ7からデータが読み出されることを示すリードイネーブル信号、第1のカウンタ8のカウント値について示している。なお、図では、データイネーブル信号入力端子25から入力されるデータイネーブル信号をデータイネーブル信号入力、データイネーブル信号出力端子30から出力されるデータイネーブル信号をデータイネーブル信号出力、D−フリップフロップをD−FFと略記している。
【0118】
図6に示されるように、タイミングtJ,tK,tLにおいてデータイネーブル信号入力端子25から入力されるデータイネーブル信号がハイレベルであるとする。このとき第1のXORゲート31の出力は第1のD−フリップフロップ32の出力を反転させるように動作するから、タイミングtJ,tK,tLにおいて第1のD−フリップフロップ32の出力レベルは反転する。
【0119】
第2のD−フリップフロップ33はライトクロックに同期した第1のD−フリップフロップ32の出力をリードクロックに同期させるように動作し、タイミングtJ,tK,tLの直後にリードクロックの立ち上がりが現れるタイミングであるtM,tO,tRで出力レベルが反転する。第3のD−フリップフロップ34の出力は第2のD−フリップフロップ33の出力をリードクロックの1周期だけ遅延させたものであるから、タイミングtN,tP,tSでレベルが反転する。そして、データイネーブル信号出力端子30から出力されるデータイネーブル信号は、第2のD−フリップフロップ33の出力と第3のD−フリップフロップ34の出力の排他的論理和であるから、これはタイミングtN,tP,tSでハイレベルとなる。
【0120】
第1のカウンタ8は、データイネーブル信号出力端子30から出力されるデータイネーブル信号がハイレベルになるたびにカウント値を1加算し、リードイネーブル信号がハイレベルになるたびにカウント値を1減算するから、リードイネーブル信号がタイミングtQ以降からリードクロックの立ち上がりエッジで常にハイレベルであったとすると、カウント値はタイミングtN,tPで1加算され、タイミングtQ以降はタイミングtSを除いてリードクロックが立ち上がるたびに1減算される。タイミングtSでは、データイネーブル信号出力端子30から出力されるデータイネーブル信号とリードイネーブル信号がともにハイレベルとなっているのでカウント値は加算も減算もされない。
【0121】
図6からわかるように、データイネーブル信号入力端子25においてライトクロックの3周期に相当する期間だけハイレベルであったデータイネーブル信号は、データイネーブル信号出力端子30においてリードクロックのやはり3周期に相当する期間だけハイレベルになっており、図4に示した回路を用いることによって、データイネーブル信号を異なる周波数のクロック信号に同期させることができることがわかる。このようにして、メモリ制御回路2の外部回路は低い周波数のクロックで駆動させつつ、メモリ制御回路2の一部だけを高い周波数のクロックで駆動させることによって回路全体の消費電力を抑えることができる。
【0122】
実施の形態2では特にリードクロックがライトクロックの2.5倍の周波数である場合について説明したが、リードクロックがライトクロックよりも高い周波数であれば任意の周波数であってよく、リードクロック及びライトクロックの周波数は時間的に変化してもよい。
【0123】
また、実施の形態2では第1のバッファ7からSDRAM1に対してデータ転送を行う第1のデータ転送回路10について説明したが、第2のデータ転送回路や、SDRAM1からバッファに対してデータ転送を行う第3のデータ転送回路18及び第4のデータ転送回路22についても同様な回路を内蔵することでバッファに記憶されているデータの数をカウントすることができる。第3のデータ転送回路18及び第4のデータ転送回路22の場合には、リードクロックとライトクロックの関係が第1のデータ転送回路10とは逆になる。
【0124】
実施の形態3.
実施の形態3は実施の形態1とは異なる構成を持つメモリ制御回路の例である。
【0125】
図7は実施の形態3であるメモリ制御回路の構成(本発明によるメモリバスの調停方法を実施するための構成)を示す図である。図7において、実施の形態1に関する図1と同じ動作をする部分には同じ符号を付し、説明の重複を避ける。
【0126】
図において、36はメモリ制御回路、37はバスアービタである。また、図において、38はSDRAM1に転送するデータを一時的に記憶する第5のバッファ、39は第5のバッファ38に記憶されているデータの数をカウントする第5のカウンタ、40はデータ及び制御信号を入力する第3の入力端子、41は制御信号を出力する第3の出力端子、42は第3の入力端子40から入力されたデータを随時第5のバッファ38に書き込み、バスアービタ37から内部メモリバス5を使用したデータ転送の実行が許可されたときには、第5のバッファ38からデータを読み出し、メモリインターフェイス4を経由してSDRAM1に転送する第5のデータ転送回路である。
【0127】
また、図において、43はSDRAM1から転送されたデータを一時的に記憶する第6のバッファ、44は第6のバッファ43に記憶されているデータの数をカウントする第6のカウンタ、45は制御信号を入力する第4の入力端子、46はデータ及び制御信号を出力する第4の出力端子、47はバスアービタ37から内部メモリバス5を使用したデータ転送の実行が許可されたときにはSDRAM1からメモリインターフェイス4を経由して第6のバッファ43にデータを書き込み、第4の出力端子45から入力される制御信号に応じて第6のバッファ43からデータを読み出して第4の出力端子46からデータを制御信号とともに出力する第6のデータ転送回路である。
【0128】
同様に、図において、48はSDRAM1から転送されたデータを一時的に記憶する第7のバッファ、49は第7のバッファ48に記憶されているデータの数をカウントする第7のカウンタ、50は制御信号を入力する第5の入力端子、51はデータ及び制御信号を出力する第5の出力端子、52はバスアービタ37から内部メモリバス5を使用したデータ転送の実行が許可されたときにはSDRAM1からメモリインターフェイス4を経由して第7のバッファ48にデータを書き込み、第5の入力端子50から入力される制御信号に応じて第7のバッファ48からデータを読み出して第5の出力端子51からデータを制御信号とともに出力する第7のデータ転送回路である。
【0129】
さらに、図において、53はSDRAM1から転送されたデータを一時的に記憶する第8のバッファ、54は第8のバッファ53に記憶されているデータの数をカウントする第8のカウンタ、55はバスアービタ37から内部メモリバス5を使用したデータ転送の実行が許可されたときにはSDRAM1からメモリインターフェイス4を経由して第8のバッファ53にデータを書き込む第8のデータ転送回路である。
【0130】
同様に、図において、56はSDRAM1から転送されたデータを一時的に記憶する第9のバッファ、57は第9のバッファ56に記憶されているデータの数をカウントする第9のカウンタ、58はバスアービタ37から内部メモリバス5を使用したデータ転送の実行が許可されたときにはSDRAM1からメモリインターフェイス4を経由して第9のバッファ56にデータを書き込む第9のデータ転送回路である。
【0131】
そして、図において、59はバスアービタ37から内部メモリバス5を使用したデータ転送の実行が許可されたときには、第8のバッファ53及び第9のバッファ56からデータを読み出し、読み出したデータ同士を用いて適当な演算を行ってからSDRAM1にデータを書き込む第10のデータ転送回路である。
【0132】
また、図において、60は第6の入力端子、61は第6の出力端子であり、これらの入出力端子からは制御信号が入出力される。
【0133】
図7に示した実施の形態3であるメモリ制御回路の動作は以下の通りである。
【0134】
第3の入力端子40から入力されるデータは、例えば、マイクロプロセッサ(図示せず)などから転送されるグラフィックスデータであるとし、第3の入力端子40から入力される制御信号はデータイネーブル信号及びグラフィックスデータの転送開始命令であるとする。また、第3の出力端子41から出力される制御信号は、グラフィックスデータの転送終了信号であるとする。第3の入力端子40から入力されるグラフィックスデータの転送開始命令は、マイクロプロセッサが最初のデータを第3の入力端子40に転送する前に発行され、第3の出力端子41から出力されるグラフィックスデータの転送終了信号は、マイクロプロセッサが第3の出力端子41に対して最後に転送したデータを、第5のデータ転送回路42がSDRAM1に転送し終わったときにアクティブ状態となる信号であるとする。
【0135】
同様に、第4の入力端子45から入力される制御信号は、マイクロプロセッサが送信するグラフィックスデータの転送開始命令であるとする。また、第4の出力端子46から出力されるデータはマイクロプロセッサに転送されるグラフィックスデータであるとし、第4の出力端子46から出力される制御信号はデータイネーブル信号及びグラフィックスデータの転送終了信号であるとする。第4の入力端子45から入力されるグラフィックスデータの転送開始命令は、第4の出力端子46から最初のデータが出力される前に発行されるとし、第4の出力端子46から出力されるグラフィックスデータの転送終了信号は、マイクロプロセッサに転送すべき最後のデータが第4の出力端子46から出力されたときにアクティブ状態となる信号であるとする。データはデータイネーブル信号に同期して第4の出力端子46から出力される。
【0136】
さらに、第5の入力端子50から入力される制御信号は、有効表示期間を示すデータイネーブル信号及び表示装置(図示せず)の走査に用いる垂直同期信号であるとする。また、第5の出力端子51から出力されるデータは表示装置に表示するグラフィックスデータであるとし、第5の出力端子51から出力される制御信号は第5の入力端子50から入力された垂直同期信号及びデータイネーブル信号を波形を変えずに適当に遅延させて得られる垂直同期信号及びデータイネーブル信号であるとする。データは第5の入力端子50から入力されたデータイネーブル信号がイネーブル状態であるときに第5のバッファ38から読み出されて第5の出力端子51から出力される。
【0137】
第8のデータ転送回路55、第9のデータ転送回路58、及び第10のデータ転送回路はSDRAM1の互いに異なるメモリ領域間でデータをブロック転送するために使用される。第10のデータ転送回路59がSDRAM1にデータを転送する前に、第8のデータ転送回路55及び第9のデータ転送回路58が読み出したデータを用いて適当な演算が行われる。この種の演算としてはグラフィックス処理で一般的に行われているアルファブレンディングやラスターオペレーションなどの演算がある。
【0138】
第6の入力端子60から入力される制御信号はグラフィックスデータの転送開始命令であるとし、第6の出力端子61から出力される制御信号はグラフィックスデータの転送終了信号であるとする。第6の入力端子60から入力されるグラフィックスデータの転送開始命令は、第8のデータ転送回路55がSDRAM1に対して最初のリードコマンドを発行する前にマイクロプロセッサによって送信され、第6の出力端子61から出力されるグラフィックスデータの転送終了信号は第10のデータ転送回路59が最後のデータをSDRAM1に転送し終わったときにマイクロプロセッサに対して送信する信号であるとする。
【0139】
第5のカウンタ39は、実施の形態1における第1のカウンタ8と同様な方法で第5のバッファ38に記憶されているデータの数をカウントする。また、第6のカウンタ44及び第7のカウンタ49は実施の形態1における第3のカウンタ16と同様な方法でそれぞれ第6のバッファ43及び第7のバッファ48に記憶されているデータの数をカウントする。
【0140】
第8のカウンタ54は、第8のデータ転送回路55がSDRAM1に対してリードコマンドを発行するたびにカウント値を1加算させ、第10のデータ転送回路59が第8のバッファ53からデータを1つ読み出すたびにカウント値を1減算させる。同様に、第9のカウンタ57は、第9のデータ転送回路58がSDRAM1に対してリードコマンドを発行するたびにカウント値を1加算させ、第10のデータ転送回路59が第9のバッファ56からデータを1つ読み出すたびにカウント値を1減算させる。
【0141】
第5のバッファ38及び第6のバッファ43は、それぞれ第5のデータ転送回路42及び第6のデータ転送回路47がグラフィックスデータの転送開始命令を受信すると各バッファに記憶されているデータを全て消去する。また、第7のバッファ48は、第7のデータ転送回路52に垂直同期信号が入力されたときにバッファに記憶されているデータを全て消去する。さらに、第8のバッファ53及び第9のバッファ56は、第10のデータ転送回路59がグラフィックスデータの転送開始命令を受信すると各バッファに記憶されているデータを全て消去する。バッファに記憶されているデータが消去されると各バッファに対応するカウンタはカウント値を“0”にリセットする。これは、実施の形態1と同じく、誤動作が発生したときでもグラフィックスデータの転送開始命令が発行されたときには正常な状態に復帰できるようにするための措置である。
【0142】
さらに、第5のデータ転送回路42、第6のデータ転送回路47、及び第7のデータ転送回路52はそれぞれ第5のカウンタ39、第6のカウンタ44、及び第7のカウンタ49のカウント値が“32”以上であるときにバスアービタ37に対してリクエスト信号を送信するとし、バスアービタ37からアクノリッジ信号が送信されたときには、それぞれ第5のカウンタ39、第6のカウンタ44、及び第7のカウンタ49のカウント値が“0”になるまでデータ転送を実行する。
【0143】
一方、第8のデータ転送回路55は第8のカウンタ54のカウント値が第8のバッファ53の全データ容量よりも小さい値であるときにバスアービタ37に対してリクエスト信号を送信するとし、バスアービタ37からアクノリッジ信号が送信されたときには、第8のカウンタ54のカウント値が第8のバッファ53の全データ容量と等しくなるまでデータ転送を実行する。同様に、第9のデータ転送回路58は第9のカウンタ57のカウント値が第9のバッファ56の全データ容量よりも小さい値であるときにバスアービタ37に対してリクエスト信号を送信するとし、バスアービタ37からアクノリッジ信号が送信されたときには、第9のカウンタ57のカウント値が第9のバッファ56の全データ容量と等しくなるまでデータ転送を実行する。
【0144】
また、第10のデータ転送回路59は第8のカウンタ54又は第9のカウンタ57のカウント値のいずれかが“0”以外であるときにリクエスト信号をバスアービタ37に送信し、バスアービタ37からアクノリッジ信号が送信されたときには、第8のカウンタ54又は第9のカウンタ57のカウント値のいずれかが“0”になるまでデータ転送を実行する。第10のデータ転送回路59は複数のバッファからデータを読み出してデータ転送を実行するようになっているため、リクエスト信号を発生する条件及びデータ転送を終了する条件には複数のカウンタが関係している。
【0145】
ここで、バスアービタ37に内蔵されているステートマシンの状態遷移図は図8に示したようになっている。すなわち、メモリ制御回路36が動作を開始したときにはステートマシンの状態は図8の「初期状態」になっており、適当なタイミングでSDRAM1の初期化を行う「SDRAM初期化」の状態に遷移するところまでは実施の形態1と同様である。
【0146】
図8において、状態「グラフィックス表示」はSDRAM1から表示装置へのデータ転送を実行する第7のデータ転送回路52に関連付けれているとし、以下、状態「書き込み」はマイクロプロセッサのデータをSDRAM1に書き込むために使用される第5のデータ転送回路42に、状態「読み出し」はSDRAM1からデータを読み出してマイクロプロセッサに転送するために使用される第6のデータ転送回路47に、状態「ブロック転送1」は第10のデータ転送回路59に、状態「ブロック転送2」は第8のデータ転送回路55に、状態「ブロック転送3」は第9のデータ転送回路58にそれぞれ関連付けられているものとする。
【0147】
SDRAM1の初期化が終了すると、ステートマシンの状態は状態「グラフィックス表示」に遷移する。このとき第7のデータ転送回路52がリクエスト信号をバスアービタ37に対して送信していれば、バスアービタ37は第7のデータ転送回路52にアクノリッジ信号を送信する。第7のデータ転送回路52がリクエスト信号を送信していないか、第7のデータ転送回路52がバスアービタ37に対してデータ転送の終了を通知した場合には、ステートマシンは次状態に遷移する。
【0148】
「グラフィックス表示」の次状態として「書き込み」、「読み出し」、「ブロック転送1」の3つの状態があるが、ステートマシンの状態は、第5のデータ転送回路42がリクエスト信号を送信している場合には「書き込み」に遷移し、第5のデータ転送回路42がリクエスト信号が送信されておらず、第6のデータ転送回路47がリクエスト信号を送信している場合には「読み出し」に遷移し、第5のデータ転送回路42及び第6のデータ転送回路47がいずれもリクエスト信号を送信していないときには、「ブロック転送1」に遷移する。
【0149】
したがって、「グラフィックス表示」の次状態への状態遷移が発生したときに第5のデータ転送回路42がリクエスト信号を送信していたとすると、ステートマシンの状態は「書き込み」に遷移し、バスアービタ37は第5のデータ転送回路42に対してアクノリッジ信号を送信する。第5のデータ転送回路42がバスアービタ37に対してデータ転送の終了を通知すると、ステートマシンの状態は「リフレッシュ」に遷移する。
【0150】
同様に、「グラフィックス表示」の次状態への状態遷移が発生したときに第5のデータ転送回路42がリクエスト信号を送信しておらず、第6のデータ転送回路47のみがリクエスト信号を送信されていたとすると、ステートマシンの状態は「読み出し」に遷移し、バスアービタ37は第6のデータ転送回路47に対してアクノリッジ信号を送信する。ここで、第4の出力端子46から最後にグラフィックスデータの転送終了信号が送信されてから第4の出力端子45からグラフィックスデータの転送開始命令がまだ入力されていないときには、マイクロプロセッサがSDRAM1に記憶されているデータを必要としていないので、第6のデータ転送回路47は、第10のデータ転送回路59にデータ転送の機会を与えるために、第6のカウンタ44のカウント値にかかわらず第6のデータ転送回路47に対してリクエスト信号を送信しないようにすることが望ましい。第6のデータ転送回路47がバスアービタ37に対してデータ転送の終了を通知すると、ステートマシンの状態は「リフレッシュ」に遷移する。
【0151】
さらに、「グラフィックス表示」の次状態への状態遷移が発生したときに第5のデータ転送回路42及び第6のデータ転送回路47がいずれもリクエスト信号を送信していなかったとすると、ステートマシンの状態は「ブロック転送1」に遷移し、バスアービタ37は第10のデータ転送回路59がリクエスト信号を送信していれば、第10のデータ転送回路59に対してアクノリッジ信号を送信する。「ブロック転送1」への状態遷移が発生したときに第10のデータ転送回路59がリクエスト信号を送信していないか、第10のデータ転送回路59がバスアービタ37に対してデータ転送の終了を通知するか、第6の出力端子61から最後にグラフィックスデータの転送終了信号が送信された後に、第6の入力端子60からグラフィックスデータの転送開始命令がまだ入力されていないかのいずれかの場合には、ステートマシンの状態は「ブロック転送2」に遷移する。第6の出力端子61から最後にグラフィックスデータの転送終了信号を送信してから第6の入力端子60からグラフィックスデータの転送開始命令がまだ入力されていない場合には、そもそもブロック転送を行う必要がないので、第10のデータ転送回路59はバスアービタ37に対してリクエスト信号を送信しないようにしてもよい。
【0152】
「ブロック転送2」及び「ブロック転送3」はそれぞれ第8のデータ転送回路55及び第9のデータ転送回路58に関連付けられた状態であり、「ブロック転送1」で説明した条件と同様の条件で状態遷移が発生する。このとき、第8のデータ転送回路55及び第9のデータ転送回路58がリクエスト信号を送信していたとしても、第6の出力端子61から最後にグラフィックスデータの転送終了信号が送信された後に、第6の入力端子60からグラフィックスデータの転送開始命令がまだ入力されていない場合には、バスアービタ37は第8のデータ転送回路55及び第9のデータ転送回路58に対してアクノリッジ信号を発生せず、ステートマシンは次状態に遷移する。グラフィックスデータの転送開始命令がまだ入力されていない場合には、第8のデータ転送回路55及び第9のデータ転送回路58はバスアービタ37に対してリクエスト信号を送信しないようにしてもよい。「ブロック転送3」の次状態は「リフレッシュ」であり、「リフレッシュ」において状態遷移が発生すると状態は再び「グラフィックス表示」に戻る。
【0153】
このように、マイクロプロセッサからSDRAM1へのデータ転送、SDRAM1からマイクロプロセッサへのデータ転送、SDRAM1からSDRAM1へのデータ転送を同時に実行する必要がない場合には、ステートマシンの状態遷移に分岐を設けることによって、ステートマシンが一巡する周期を早めることができる。マイクロプロセッサはグラフィックスデータの転送開始命令及び転送終了信号を参照することによって現在実行中のデータ転送を知ることができるため、実行中のデータ転送が終了するまでは新しくグラフィックスデータの転送命令を発行しないようにすればよい。
【0154】
ステートマシンの状態遷移の分岐はデータ転送に優先順位を付けるためにも使用することができる。仮に第5のデータ転送回路42、第6のデータ転送回路47、第10のデータ転送回路59の全てがグラフィックスデータの転送開始命令を受信しており、かつリクエスト信号を送信する場合があるとすると、最も優先順位が高いのは第5のデータ転送回路42が行うデータ転送であり、次に優先順位が高いのは第6のデータ転送回路47が行うデータ転送である。最も優先順位が低いのは第8のデータ転送回路55、第9のデータ転送回路58及び第10のデータ転送回路59が行うデータ転送であり、これら3個のデータ転送回路が行うデータ転送の優先順位は同じであるとみなすことができる。
【0155】
また、バスアービタ37は第7のデータ転送回路52がリクエスト信号を送信しているときには、第8のデータ転送回路55、第9のデータ転送回路58、及び第10のデータ転送回路59のいずれかがデータ転送を実行中であっても、カウンタの値に関わらず実行中のデータ転送を中断するように通知する。データ転送の中断の通知を行うために専用の信号線を各データ転送回路ごとに設けてもよいが、例えば、データ転送を実行中のデータ転送回路に対してアクノリッジ信号の送信を止め、アクノリッジ信号をローレベルにすることで通知を行うとしてもよい。データ転送の実行中にアクノリッジ信号がローレベルとなったデータ転送回路は適当な方法でなるべく速やかに実行中のデータ転送を終了し、バスアービタ37にデータ転送の終了を通知するとする。バスアービタ37がデータ転送回路からデータ転送の終了を通知された場合には、ステートマシンは次状態に遷移する。
【0156】
さらに、バスアービタ37は第7のデータ転送回路52がリクエスト信号を送信しているときには、第8のデータ転送回路55、第9のデータ転送回路58、第10のデータ転送回路59がリクエスト信号をバスアービタ37に対して送信しているときでもアクノリッジ信号をこれら3個のデータ転送回路に送信せずに次状態に遷移させるとする。
【0157】
第7のデータ転送回路52は、SDRAM1から表示装置へのデータ転送を実行しており、一般的にはグラフィックスデータのブロック転送は実行開始が1フレーム程度前後しても良いのに対して、表示装置に対するデータ転送は表示画面の所定の座標に正確に映像データを表示する必要から最もリアルタイム性が高く、したがってデータ転送の優先順位を最も高く設定する必要がある。このように、優先順位の高いデータ転送回路がリクエスト信号を送信しているときには、優先度の低いデータ転送回路が実行しているデータ転送を中断する、又は優先度の低いデータ転送回路に対してアクノリッジ信号を送信しないようにすることによってバッファのオーバフローやアンダーフローを発生させること無く、破綻のないメモリバスの調停を行うことができる。
【0158】
実施の形態4.
図9はこの発明の実施の形態4であるメモリ制御回路の構成(本発明によるメモリバスの調停方法を実施するための構成)を示す図である。図9において、実施の形態3に関する図7と同じ動作をする部分には同じ符号を付す。実施の形態4は実施の形態3におけるバスアービタ62に内蔵されているステートマシンを命令キューに置き換えたものである。実施の形態4であるメモリ制御回路は実施の形態3と同じ構成をとるので、ここではバスアービタ37aに内蔵されている命令キューの動作についてのみ説明する。
【0159】
命令キューはシフトレジスタによって構成されており、シフトレジスタの段数は同時にメモリバスの使用権を要求する回路の最大数に等しい7段のレジスタで構成する。実施の形態4では同時にメモリバスの使用権を要求する回路は6個のデータ転送回路42,47,52,55,58,59に1個のリフレッシュコマンド発生回路24を加えた合計7個の回路である。
【0160】
メモリ制御回路36が動作を開始したときにはシフトレジスタを構成する7個のレジスタの値は全て“0”で初期化されているとする。メモリバスの使用権を要求する7個の回路のいずれかがバスアービタ37aに対してリクエスト信号を送信すると、その回路に対応した値を命令キューの最後尾に登録する。メモリ制御回路36が動作を開始したときには命令キューの長さは0である。回路に対応した値を命令キューに登録することによってデータ転送命令及びリフレッシュ命令の実行を予約しておくことができる。ただし、各回路に対応する値が既に7個のシフトレジスタのいずれかに登録されているときには、これらの回路がリクエスト信号を送信したとしても二重に登録しないようにする。ここで、リフレッシュコマンド発生回路24は、実施の形態1で述べたように、リフレッシュ動作が終了したことを通知する場合を除いて、常にバスアービタ37aに対してリクエスト信号を送信しているとする。
【0161】
ここで、仮に第5のデータ転送回路42に関連付けられた値を“5”とし、第5のデータ転送回路42がバスアービタ37aに対してリクエスト信号を送信したときに、命令キューの長さが0であったとすると、命令キューの先頭である1段目のレジスタに値“5”を登録し、命令キューの長さは1だけ長くなって1となる。同様に、命令キューの長さが3であるときに第5のデータ転送回路42に関連付けられた値を登録するときは、4段目のレジスタに値“5”を登録し、命令キューの長さは1だけ長くなって4となる。
【0162】
これ以外の6個の回路に対応する値を登録するときも同様である。以下、第6のデータ転送回路47に関連付けられた値を“6”、第7のデータ転送回路52に関連付けられた値を“7”、第8のデータ転送回路55に関連付けられた値を“8”、第9のデータ転送回路58に関連付けられた値を“9”、第10のデータ転送回路59に関連付けられた値を“10”、リフレッシュコマンド発生回路24に関連付けられた値を“11”とする。このようにして、時間的に早くリクエスト信号を送信した回路から順番に命令キューに登録される。
【0163】
ここで、特に7個の回路のいずれか複数の回路が同時にリクエスト信号を送信するような場合には、所定の優先順位に従っていずれかを命令キューの前段に登録するか、所定の優先順位に従っていずれかを時間的に先に命令キューに登録するようにすればよい。
【0164】
バスアービタ37aは命令キューの先頭である1段目のレジスタに登録されている値に関連付けられた回路に対してアクノリッジ信号を送信する。例えば、1段目のレジスタに登録されている値が“5”であるとすると、バスアービタ37aは第5のデータ転送回路42に対してアクノリッジ信号を送信する。この後、バスアービタ37aが第5のデータ転送回路42からデータ転送の終了を通知されると、シフトレジスタに各レジスタ値を1段前のレジスタにシフトさせ、新しく命令キューの先頭に値が登録された回路に対してアクノリッジ信号を送信する。以下、データ転送又はリフレッシュ動作の終了が通知されるたびに、同様なシフト動作を繰り返す。
【0165】
ここで、実施の形態3で行ったようにマイクロプロセッサからSDRAM1へのデータ転送、SDRAM1からマイクロプロセッサへのデータ転送、SDRAM1からSDRAM1へのデータ転送の順番でデータ転送の実行に優先順位を付ける場合には、第5のデータ転送回路42がリクエスト信号を送信しているか、すでに“5”の値が命令キューに登録されている場合には、第6のデータ転送回路47、第8のデータ転送回路55、第9のデータ転送回路58及び第10のデータ転送回路59がリクエスト信号を送信していても各回路に関連付けられた値を命令キューの最後尾に登録しないようにし、さらに、第6のデータ転送回路47がリクエスト信号を送信しているか、すでに“6”の値が命令キューに登録されている場合には、第8のデータ転送回路55、第9のデータ転送回路58及び第10のデータ転送回路59がリクエスト信号を送信していても、各回路に関連付けられた値を命令キューの最後尾に登録しないようにすればよい。
【0166】
さらに、表示装置へのデータ転送を行う必要があるときにSDRAM1からSDRAM1へのデータ転送を行わないようにするためには、第7のデータ転送回路52がリクエスト信号を発生した場合には、第8のデータ転送回路55、第9のデータ転送回路58及び第10のデータ転送回路59がリクエスト信号を送信していても各回路に関連付けられた値を命令キューの最後尾に登録せず、また、これらの回路に関連付けられた値が既に命令キューの先頭に登録されていたとしてもアクノリッジ信号を送信せずにシフト動作を行うようにすればよい。
【0167】
また、第8のデータ転送回路55、第9のデータ転送回路58及び第10のデータ転送回路59が実行しているデータ転送を中断したいときには、実施の形態3で述べた方法と同様な方法で中断させることができる。このようにしてステートマシンの代わりに命令キューを用いたとしてもメモリバスの調停を行うことが可能である。
【0168】
なお、実施の形態4ではリフレッシュコマンド発生回路24がバスアービタ37aに対してリクエスト信号を送信したときに“11”の値を命令キューに登録するとしたが、リフレッシュコマンド発生回路24に関連付けられた値を登録する代わりに、バスアービタ37aは命令キューの長さが0のときにリフレッシュコマンド発生回路24に対してアクノリッジ信号を送信するとしても良い。
【0169】
実施の形態5.
実施の形態5は、実施の形態1における4個のデータ転送回路と実施の形態4における6個のデータ転送回路を全て同じ内部メモリバスに接続したメモリ制御回路(本発明によるメモリバスの調停方法を実施するための構成)の例である。図10には、実施の形態5におけるバスアービタ62のほかは内部メモリバス5に接続されている回路のみを示し、バッファ、カウンタ、入力端子、出力端子、及びコマンド発生回路などのメモリ制御回路の各要素、並びに、SDRAM及び外部メモリバスなどの要素は煩雑を避けるために図示を省略している。したがって、以下の説明においては、図10のみではなく、図1、図7、及び図9をも用いる。
【0170】
図において、第1のデータ転送回路10、第2のデータ転送回路14、第3のデータ転送回路18、及び第4のデータ転送回路22は動画像データを扱う回路であるとし、毎フレームにおいて外部回路(図示せず)との間でデータ転送が行われるとする。また、第7のデータ転送回路52はグラフィックスデータをSDRAM1から表示装置(図示せず)に毎フレーム転送する回路であるとする。これ以外の5つのデータ転送回路42,47,55,58,59は、不定期に発行されるグラフィックス転送開始命令に基づいてグラフィックスデータの転送を実行するものとする。
【0171】
このとき、動画像データを扱う4個のデータ転送回路10,14,18,22及びグラフィックスデータを表示装置に転送する第7のデータ転送回路52が行うデータ転送の優先順位は、残りの5つのデータ転送回路42,47,55,58,59が不定期に行うデータ転送よりも優先順位を高くする方が望ましい。これは不定期にデータ転送を行う後者の5個のデータ転送回路42,47,55,58,59がマイクロプロセッサと適切なハンドシェイクを行うことでデータ転送を行うタイミングをある程度遅らせることができるのに対して、前者の5個のデータ転送回路10,14,18,22,52は外部回路や表示装置などが要求するタイミングでデータを転送する必要があるためである。
【0172】
このように、データ転送に優先順位を付けるために、実施の形態5におけるバスアービタ62はステートマシンと命令キューの両方を内蔵し、ステートマシンの一つの状態を命令キューに割り当てるようにする。図11はステートマシンの状態遷移図を示したものであり、図の「命令キュー」の状態が命令キューに割り当てられている状態であるとする。これ以外の状態については実施の形態1又は実施の形態3で述べたものと同じであるとする。
【0173】
命令キューに値を登録するデータ転送回路は、不定期にデータ転送を実行する第5のデータ転送回路42、第6のデータ転送回路47、第8のデータ転送回路55、第9のデータ転送回路58、及び第10のデータ転送回路59のみであるとする。したがって、実施の形態5では命令キューを構成するシフトレジスタの段数は5段でよい。
【0174】
ステートマシンが状態「グラフィックス表示」から状態「命令キュー」に遷移したときには、バスアービタ62は命令キューの先頭に登録されている値に関連付けられたデータ転送回路にアクノリッジ信号を送信する。命令キューの長さが0であるときにはいずれのデータ転送回路にもアクノリッジ信号を送信せずに直ちに次の状態である「リフレッシュ」に遷移する。また、先頭に登録されている値に関連付けられたデータ転送回路がバスアービタ62に対してデータ転送の終了を通知したときには、シフトレジスタの内容を一段前にシフトするとともに、ステートマシンの状態が「リフレッシュ」に遷移する。新しく命令キューの先頭に登録された値に関連付けられたデータ転送回路はステートマシンの状態が一巡して再び「命令キュー」に遷移したときに実行される。
【0175】
さらに、バスアービタ62は第1のデータ転送回路10、第2のデータ転送回路14、第3のデータ転送回路18、第4のデータ転送回路22、及び第7のデータ転送回路52の5個のデータ転送回路のうちいずれか1つのデータ転送回路がバスアービタ62に対してリクエスト信号を送信しているときには、ステートマシンの状態が「命令キュー」に遷移したとしても命令キューの先頭に登録された値に関連付けられたデータ転送回路にアクノリッジ信号を送信せずに直ちに次の状態である「リフレッシュ」に遷移する。
【0176】
このようにして、命令キューに登録された値に関連付けられたデータ転送は、ステートマシンの1つの状態に関連付けられたデータ転送が行われていない、例えば、有効表示期間外などに実行することができ、メモリバスの転送バンド幅を効率よく使用することができる。
【0177】
実施の形態5では、SDRAM1からバッファへの転送を行うデータ転送回路が3個存在するため、これら第3のデータ転送回路18、第4のデータ転送回路22、及び第7のデータ転送回路52において同時に垂直同期信号の基準エッジが検出されたとすると、第3のバッファ15、第4のバッファ19、及び第7のバッファ48に記憶されているデータの数は“0”となり、いずれのデータ転送回路18,22,52もリクエスト信号を発生することになる。
【0178】
ここで、第7のデータ転送回路52は実施の形態3で述べたように、第7のカウンタ49のカウント値が第7のバッファ48の全容量と等しくなるまでデータ転送を実行するから、バッファのアンダーフローを防ぐために第7のバッファ48の全容量を大きくしたすると、データ転送が開始されてからデータ転送が終了するまで長い時間が必要となる。これに加えて第1のデータ転送回路10と第2のデータ転送回路14が32個のデータ転送を行うことを考慮すると、例えば、ステートマシンの状態が一巡して「データ転送1」から再び「データ転送1」に戻ったときには第1のバッファがオーバーフローしている可能性が高い。
【0179】
このように、SDRAM1からバッファへの転送を行うデータ転送回路の数が多い場合、あるいはSDRAM1からデータが転送されてくるバッファの容量が大きい場合などには、バッファに記憶されているデータの数が同時に“0”となったときには、単位時間あたりにバッファから外部回路に出力されるデータの数に関わらず、瞬間的にSDRAM1との間で転送しなければならないデータの数が多くなる。
【0180】
一般的に、垂直同期信号の基準エッジが検出された後は垂直ブランキング期間となり、すぐには有効表示期間とはならないので、第3のバッファ15、第4のバッファ19、及び第7のバッファ48からデータが実際に読み出されるまでにある程度の時間の余裕がある。したがって、垂直ブランキング期間には1回のデータ転送において転送するデータの数を有効表示期間よりも少なくすることによって、ステートマシンの状態が一巡するまでの時間を短くし、メモリバスの調停が破綻しないようにすることができる。
【0181】
具体的には、垂直ブランキング期間では第3のデータ転送回路18及び第4のデータ転送回路22は32個ではなく16個のデータを転送するとし、第7のデータ転送回路52は第7のカウンタ49のカウント値が第7のバッファ48の全データ容量と等しくなるまでではなく、全データ容量の4分の1ずつ4回にわけてデータを転送するとしてもよい。
【0182】
別の方法としては、第3のデータ転送回路18と第4のデータ転送回路22が1回のデータ転送で転送するデータの数を16個とする代わりに、垂直ブランキング期間ではステートマシンの状態が一巡する間に第3のデータ転送回路18と第4のデータ転送回路22のいずれか一方に対してしかバスアービタ62はアクノリッジ信号を送信しないとしてもよい。すなわち、ある一巡(ステートマシンの状態の一巡)では第3のデータ転送回路18にアクノリッジ信号を送信したとすると、次の一巡では第3のデータ転送回路18がリクエスト信号を送信していたとしてもアクノリッジ信号を送信しないなどとすることによって、ステートマシンの状態が一巡する時間を早めることができる。
【0183】
転送するデータを少なくする期間としては垂直ブランキング期間を検出する代わりに、バッファに記憶されているデータの数が“0”となってからバッファの全データ容量に等しくなるまでなどとしてもよい。
【0184】
なお、実施の形態1から5までの2以上の制御内容を組み合わせた制御を行うメモリ制御回路を構成してもよい。また、本発明には実施の形態1から5までの2以上の制御内容を組み合わせたメモリバスの調停方法も含まれる。また、データ転送回路の台数、転送するデータの種類等は、上記実施の形態1から5までのものに限定されず、変更可能である。さらに、説明を簡単にするため、実施の形態1から5までにおいて外部メモリバスに接続されているSDRAMの個数は1個であるとしたが、メモリバスに接続されるメモリの個数は任意であってよい。たとえば16ビット分のデータ入出力端子を持つSDRAMを2つ使用する場合は、32ビットのバス幅を持つメモリバスに32ビット分のデータ入出力端子を持つSDRAMを1個接続した場合と同様に考えることができる。
【0185】
【発明の効果】
以上に説明したように、参考例のメモリ制御回路は、(1)前記複数のデータ転送回路のそれぞれは、少なくとも1つ以上の前記複数のカウンタのカウント値に基づいて前記データ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、(2)前記ステートマシンの現状態に関連付けられたデータ転送回路がリクエスト信号を送信していれば、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送回路に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、(3)前記複数のデータ転送回路のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数又は少なくとも1つ以上の前記複数のカウンタのカウント値のいずれかに基づいて実行中の前記データ転送を終了し、(4)前記ステートマシンの現状態に関連付けられたデータ転送回路が前記リクエスト信号を送信していない場合又は実行中の前記データ転送を終了した場合のいずれかの場合には、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送回路に前記アクノリッジ信号を送信せず、前記ステートマシンは次状態に遷移し、(5)前記処理(1)から(4)までを繰り返すように構成したため、複数のデータ転送回路が使用権を要求するメモリバスを破綻なく調停し、メモリ制御回路と外部回路との間で任意のタイミングでデータを入力又は出力することができる。
【0186】
また、参考例のメモリ制御回路は、ステートマシンの現状態に関連付けられたデータ転送回路がリクエスト信号を送信している場合であっても、現状態以外の状態に関連付けられた特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合には、ステートマシンは次状態に遷移し、バスアービタは現状態に関連付けられたデータ転送回路にアクノリッジ信号を送信しないように構成したため、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0187】
また、参考例のメモリ制御回路は、ステートマシンの現状態に対応する次状態が複数存在する場合には、特定の1つ以上のデータ転送回路が送信するリクエスト信号に基づいて次状態が決定されるように構成したため、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0188】
参考例のメモリ制御回路は、(1)前記複数のデータ転送回路のそれぞれは、少なくとも1つ以上の前記複数のカウンタのカウント値に基づいてデータ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、(2)前記バスアービタが前記複数のデータ転送回路から前記リクエスト信号を受信した場合には、前記リクエスト信号を送信したデータ転送回路に関連付けられたデータ転送命令を命令キューの最後尾に登録し、(3)前記バスアービタは、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、(4)前記複数のデータ転送回路のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数又は少なくとも1つ以上の前記複数のカウンタのカウント値のいずれかに基づいて実行中の前記データ転送を終了し、(5)前記データ転送回路がデータ転送を終了した場合には、前記データ転送回路に関連付けられたデータ転送命令を命令キューから削除するとともに、後段の命令キューの内容を1段前にシフトし、(6)前記処理(1)から(5)までを繰り返すように構成したため、複数のデータ転送回路が使用権を要求するメモリバスを破綻なく調停し、メモリ制御回路と外部回路との間で任意のタイミングでデータを入力又は出力することができる。
【0189】
また、参考例のメモリ制御回路は、前記請求項4の処理(1)において前記データ転送回路がリクエスト信号を送信している場合であっても、前記リクエスト信号を送信しているデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合又は前記特定の1つ以上のデータ転送回路に関連付けられたデータ転送命令がすでに命令キューに登録されている場合のいずれかの場合には、前記処理(2)を実行せず、前記リクエスト信号を送信しているデータ転送回路のデータ転送命令を前記命令キューに登録しないように構成したため、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0190】
また、参考例のメモリ制御回路は、前記データ転送命令が命令キューの先頭に登録されている場合であっても、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合又は前記特定の1つ以上のデータ転送回路に関連付けられているデータ転送命令がすでに前記命令キューに登録されている場合のいずれかの場合には、前記処理(3)を実行せず、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路に対してアクノリッジ信号を送信しないように構成したため、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0191】
請求項1に関するメモリ制御回路は、バスアービタが、シフトレジスタで構成された命令キューと、前記複数のデータ転送回路のそれぞれと関連付けられた複数の状態のなかのいずれか又は命令キューと関連付けられた状態を現状態とし、一つのデータ転送回路に関連付けられた状態、又は、一つの命令キューと関連付けられた状態が終了すると、次のデータ転送回路又は次の命令キューに関連付けられた状態に遷移し、かつ、各状態が循環するように遷移するステートマシンとを内蔵し、前記ステートマシンが持つ状態の1つを前記命令キューに関連付け、前記複数のデータ転送回路の一部が前記ステートマシンが持つ状態に関連付けられ、前記複数のデータ転送回路の残りが前記命令キューに関連付けられ、(1)前記複数のデータ転送回路のそれぞれは、各データ転送回路のバッファに記憶されているデータの数に対する前記複数のカウンタのカウント値が所定カウント値以上の場合に、前記データ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、(2)前記ステートマシンの現状態に関連付けられたデータ転送回路がリクエスト信号を送信していれば、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送回路に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、(3)前記複数のデータ転送回路のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数に基づいて実行中の前記データ転送を終了し、(4)前記ステートマシンの現状態に関連付けられたデータ転送回路が前記リクエスト信号を送信していない場合、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送回路に前記アクノリッジ信号を送信せず、前記ステートマシンは次状態に遷移し、(5)前記ステートマシンが前記命令キューに関連付けられた状態に遷移した場合にのみ、前記命令キューに登録されているデータ転送命令の一部又は全部を前記命令キューの先頭から順に実行した後に前記ステートマシンは次状態に遷移し、(6)前記処理(1)から(5)までを繰り返すように構成したため、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えると共に、複数のデータ転送回路が使用権を要求するメモリバスを破綻なく調停し、メモリ制御回路と外部回路との間で任意のタイミングでデータを入力又は出力することができる。
【0192】
また、請求項2に関するメモリ制御回路は、前記請求項1の処理(5)において、(5−1)前記バスアービタが前記命令キューに関連づけられたデータ転送回路のいずれかから前記リクエスト信号を受信した場合には、前記リクエスト信号を送信したデータ転送回路に関連付けられたデータ転送命令を命令キューの最後尾に登録し、(5−2)前記バスアービタは、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、(5−3)前記命令キューに関連づけられたデータ転送回路のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数に基づいて実行中の前記データ転送を終了し、(5−4)前記データ転送回路がデータ転送を終了した場合には、前記データ転送回路に関連付けられたデータ転送命令を命令キューから削除するとともに、後段の命令キューの内容を1段前にシフトし、(5−5)前記処理(5−1)から(5−4)までを1回以上実行するので、複数のデータ転送回路が使用権を要求するメモリバスを破綻なく調停し、メモリ制御回路と外部回路との間で任意のタイミングでデータを入力又は出力することができる。
【0193】
また、請求項3に関するメモリ制御回路は、前記処理(5−1)において前記データ転送回路がリクエスト信号を送信している場合であっても、前記リクエスト信号を送信しているデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合、前記処理(5−2)を実行せず、前記リクエスト信号を送信しているデータ転送回路のデータ転送命令を前記命令キューに登録しないように構成したので、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0194】
また、請求項4に関するメモリ制御回路は、前記請求項2又は3において、前記データ転送命令が命令キューの先頭に登録されている場合であっても、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合、前記処理(5−3)を実行せず、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路に対してアクノリッジ信号を送信しないように構成したので、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0195】
また、請求項5に関するメモリ制御回路は、ステートマシンの現状態に関連付けられた命令キューにデータ転送命令が登録されている場合であっても、現状態以外の状態に関連付けられた特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合には、ステートマシンは次状態に遷移し、バスアービタは命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路にアクノリッジ信号を送信しないように構成したため、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0196】
さらに、請求項6に関するメモリ制御回路は、データ転送回路がデータ転送を実行している途中であっても、データ転送を実行しているデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号の送信を開始した場合には、バスアービタはデータ転送を実行しているデータ転送回路に対して、実行中のデータ転送を終了させるように命令するように構成したため、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0197】
また、請求項7に関するメモリ制御回路は、カウンタは、バッファに対する読み出し命令、バッファに対する書き込み命令、メモリに対する読み出し命令、メモリに対する書き込み命令のいずれかを組み合わせて使用することによって、バッファに記憶されているデータの数に対応するカウント値を保持するように構成したため、データ転送の実行を要求するリクエスト信号をバッファに記憶されているデータの数に応じて発生させることができる。
【0198】
さらに、請求項8に関するメモリ制御回路は、カウンタは、バッファに対する読み出し命令あるいは書き込み命令が発行されるたびに反転するパルスを発生する反転パルス生成回路と、反転パルス生成回路が発生したパルスのエッジを検出する微分回路とを備え、カウンタは、微分回路の検出結果、メモリに対する読み出し命令、メモリに対する書き込み命令のいずれかを組み合わせて使用することによって、バッファに記憶されているデータの数に対応するカウント値を保持するように構成したため、高速なクロックを用いる回路を限定し、メモリ制御回路及び外部回路の消費電力を増大させることなく、メモリバスの転送バンド幅を高めることができる。
【0199】
また、請求項9に関するメモリ制御回路は、前記複数のデータ転送回路のそれぞれが、前記複数のカウンタのカウント値が設定値以上になったとき及び設定値以下になったときのいずれかのときにリクエスト信号を発生するように構成したため、データ転送回路は複数のバッファに記憶されているデータ数に応じてデータ転送の実行の有無を決定することができる。
【0200】
さらに、参考例のメモリ制御回路は、前記複数のデータ転送回路のそれぞれが、前記複数のカウンタのカウント値が設定値以上になったとき及び設定値以下になったときのいずれかのときにデータ転送を終了するように構成したため、データ転送回路は複数のバッファに記憶されているデータ数に応じてデータ転送の実行の有無を決定することができる。
【0201】
また、参考例のメモリ制御回路は、前記複数のデータ転送回路のうちの、前記メモリを転送元とし前記バッファを転送先とするデータ転送回路において、転送先である前記バッファに記憶されている全てのデータが外部信号に基づいて消去された場合には、所定の期間にわたって、前記データ転送回路が1回のデータ転送で転送するデータの数を所定の期間外よりも少なくするか又は前記バスアービタが前記データ転送回路が送信するリクエスト信号に応答してアクノリッジ信号を送信する頻度を所定の期間外よりも少なくするように構成したため、バッファに記憶されている全てのデータが消去された場合でも、瞬間的に転送すべきデータが多くなることを防ぎ、メモリバスの調停を破綻しないようにすることができる。
【0202】
参考例のメモリバスの調停方法によれば、(1)前記複数のデータ転送手段のそれぞれは、少なくとも1つ以上の前記複数のカウンタのカウント値に基づいて前記データ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、(2)前記ステートマシンの現状態に関連付けられたデータ転送手段がリクエスト信号を送信していれば、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送手段に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、(3)前記複数のデータ転送手段のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数又は少なくとも1つ以上の前記複数のカウンタのカウント値のいずれかに基づいて実行中の前記データ転送を終了し、(4)前記ステートマシンの現状態に関連付けられたデータ転送手段が前記リクエスト信号を送信していない場合又は実行中の前記データ転送を終了した場合のいずれかの場合には、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送手段に前記アクノリッジ信号を送信せず、前記ステートマシンは次状態に遷移し、(5)前記処理(1)から(4)までを繰り返すので、複数のデータ転送手段が使用権を要求するメモリバスを破綻なく調停し、メモリ制御回路と外部回路との間で任意のタイミングでデータを入力又は出力することができる。
【0203】
また、参考例のメモリバスの調停方法によれば、ステートマシンの現状態に関連付けられたデータ転送手段がリクエスト信号を送信している場合であっても、現状態以外の状態に関連付けられた特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合には、ステートマシンは次状態に遷移し、バスアービタは現状態に関連付けられたデータ転送手段にアクノリッジ信号を送信しないようにしたので、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0204】
また、参考例のメモリバスの調停方法によれば、ステートマシンの現状態に対応する次状態が複数存在する場合には、特定の1つ以上のデータ転送手段が送信するリクエスト信号に基づいて次状態が決定されるようにしたので、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0205】
参考例のメモリバスの調停方法によれば、(1)前記複数のデータ転送手段のそれぞれは、少なくとも1つ以上の前記複数のカウンタのカウント値に基づいてデータ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、(2)前記バスアービタが前記複数のデータ転送手段から前記リクエスト信号を受信した場合には、前記リクエスト信号を送信したデータ転送手段に関連付けられたデータ転送命令を命令キューの最後尾に登録し、(3)前記バスアービタは、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、(4)前記複数のデータ転送手段のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数又は少なくとも1つ以上の前記複数のカウンタのカウント値のいずれかに基づいて実行中の前記データ転送を終了し、(5)前記データ転送手段がデータ転送を終了した場合には、前記データ転送手段に関連付けられたデータ転送命令を命令キューから削除するとともに、後段の命令キューの内容を1段前にシフトし、(6)前記処理(1)から(5)までを繰り返すようにしたので、複数のデータ転送手段が使用権を要求するメモリバスを破綻なく調停し、メモリ制御回路と外部回路との間で任意のタイミングでデータを入力又は出力することができる。
【0206】
また、参考例のメモリバスの調停方法によれば、前記請求項21の処理(1)において前記データ転送手段がリクエスト信号を送信している場合であっても、前記リクエスト信号を送信しているデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合又は前記特定の1つ以上のデータ転送手段に関連付けられたデータ転送命令がすでに命令キューに登録されている場合のいずれかの場合には、前記処理(2)を実行せず、前記リクエスト信号を送信しているデータ転送手段のデータ転送命令を前記命令キューに登録しないようにしたので、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0207】
また、参考例のメモリバスの調停方法によれば、前記データ転送命令が命令キューの先頭に登録されている場合であっても、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合又は前記特定の1つ以上のデータ転送手段に関連付けられているデータ転送命令がすでに前記命令キューに登録されている場合のいずれかの場合には、前記処理(3)を実行せず、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段に対してアクノリッジ信号を送信しないようにしたので、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0208】
請求項10に関するメモリバスの調停方法によれば、バスアービタが、シフトレジスタで構成された命令キューと、前記複数のデータ転送手段のそれぞれと関連付けられた複数の状態のなかのいずれか又は命令キューと関連付けられた状態を現状態とし、一つのデータ転送手段に関連付けられた状態、又は、一つの命令キューと関連付けられた状態が終了すると、次のデータ転送手段又は次の命令キューに関連付けられた状態に遷移し、かつ、各状態が循環するように遷移するステートマシンとを内蔵し、前記ステートマシンが持つ状態の1つを前記命令キューに関連付け、前記複数のデータ転送手段の一部が前記ステートマシンが持つ状態に関連付けられ、前記複数のデータ転送手段の残りが前記命令キューに関連付けられ、(1)前記複数のデータ転送手段のそれぞれは、各データ転送手段のバッファに記憶されているデータの数に対する前記複数のカウンタのカウント値が所定カウント値以上の場合に、前記データ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、(2)前記ステートマシンの現状態に関連付けられたデータ転送手段がリクエスト信号を送信していれば、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送手段に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、(3)前記複数のデータ転送手段のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数に基づいて実行中の前記データ転送を終了し、(4)前記ステートマシンの現状態に関連付けられたデータ転送手段が前記リクエスト信号を送信していない場合、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送手段に前記アクノリッジ信号を送信せず、前記ステートマシンは次状態に遷移し、(5)前記ステートマシンが前記命令キューに関連付けられた状態に遷移した場合にのみ、前記命令キューに登録されているデータ転送命令の一部又は全部を前記命令キューの先頭から順に実行した後に前記ステートマシンは次状態に遷移し、(6)前記処理(1)から(5)までを繰り返すようにしたので、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えると共に、複数のデータ転送手段が使用権を要求するメモリバスを破綻なく調停し、メモリ制御回路と外部回路との間で任意のタイミングでデータを入力又は出力することができる。
【0209】
また、請求項11に関するメモリバスの調停方法によれば、前記請求項10の処理(5)において、(5−1)前記バスアービタが前記命令キューに関連づけられたデータ転送手段のいずれかから前記リクエスト信号を受信した場合には、前記リクエスト信号を送信したデータ転送手段に関連付けられたデータ転送命令を命令キューの最後尾に登録し、(5−2)前記バスアービタは、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、(5−3)前記命令キューに関連づけられたデータ転送手段のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数に基づいて実行中の前記データ転送を終了し、(5−4)前記データ転送手段がデータ転送を終了した場合には、前記データ転送手段に関連付けられたデータ転送命令を命令キューから削除するとともに、後段の命令キューの内容を1段前にシフトし、(5−5)前記処理(5−1)から(5−4)までを1回以上実行するので、複数のデータ転送手段が使用権を要求するメモリバスを破綻なく調停し、メモリ制御回路と外部回路との間で任意のタイミングでデータを入力又は出力することができる。
【0210】
また、請求項12に関するメモリバスの調停方法によれば、前記処理(5−1)において前記データ転送手段がリクエスト信号を送信している場合であっても、前記リクエスト信号を送信しているデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合、前記処理(5−2)を実行せず、前記リクエスト信号を送信しているデータ転送手段のデータ転送命令を前記命令キューに登録しないようにしたので、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0211】
また、請求項13に関するメモリバスの調停方法によれば、前記請求項11又は12において、データ転送命令が命令キューの先頭に登録されている場合であっても、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合、前記処理(5−3)を実行せず、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段に対してアクノリッジ信号を送信しないようにしたので、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0212】
また、請求項14に関するメモリバスの調停方法によれば、ステートマシンの現状態に関連付けられた命令キューにデータ転送命令が登録されている場合であっても、現状態以外の状態に関連付けられた特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合には、ステートマシンは次状態に遷移し、バスアービタは命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段にアクノリッジ信号を送信しないようにしたので、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0213】
さらに、請求項15に関するメモリバスの調停方法によれば、データ転送手段がデータ転送を実行している途中であっても、データ転送を実行しているデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号の送信を開始した場合には、バスアービタはデータ転送を実行しているデータ転送手段に対して、実行中のデータ転送を終了させるように命令するようにしたので、優先順位の高いデータ転送に多くのデータ転送の実行機会を与えることができる。
【0214】
また、請求項16に関するメモリバスの調停方法によれば、カウンタは、バッファに対する読み出し命令、バッファに対する書き込み命令、メモリに対する読み出し命令、メモリに対する書き込み命令のいずれかを組み合わせて使用することによって、バッファに記憶されているデータの数に対応するカウント値を保持するようにしたので、データ転送の実行を要求するリクエスト信号をバッファに記憶されているデータの数に応じて発生させることができる。
【0215】
さらに、請求項17に関するメモリバスの調停方法によれば、カウンタは前記複数のバッファに対する読み出し命令あるいは書き込み命令が発行されるたびに反転するパルスを発生し、この発生した前記パルスのエッジを検出し、前記複数のカウンタのそれぞれは、前記検出されたパルスのエッジ、前記メモリに対する読み出し命令、前記メモリに対する書き込み命令のいずれかを組み合わせて使用することによって、前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を保持するようにしたので、高速なクロックを用いる回路を限定し、メモリ制御回路及び外部回路の消費電力を増大させることなく、メモリバスの転送バンド幅を高めることができる。
【0216】
また、請求項18に関するメモリバスの調停方法によれば、前記複数のデータ転送手段のそれぞれが、前記複数のカウンタのカウント値が設定値以上になったとき及び設定値以下になったときのいずれかのときにリクエスト信号を発生するようにしたので、データ転送手段は複数のバッファに記憶されているデータ数に応じてデータ転送の実行の有無を決定することができる。
【0217】
さらに、参考例のメモリバスの調停方法によれば、前記複数のデータ転送手段のそれぞれが、前記複数のカウンタのカウント値が設定値以上になったとき及び設定値以下になったときのいずれかのときにデータ転送を終了するようにしたので、データ転送手段は複数のバッファに記憶されているデータ数に応じてデータ転送の実行の有無を決定することができる。
【0218】
また、参考例のメモリバスの調停方法によれば、前記複数のデータ転送手段のうちの、前記メモリを転送元とし前記バッファを転送先とするデータ転送手段において、転送先である前記バッファに記憶されている全てのデータが外部信号に基づいて消去された場合には、所定の期間にわたって、前記データ転送手段が1回のデータ転送で転送するデータの数を所定の期間外よりも少なくするか又は前記バスアービタが前記データ転送手段が送信するリクエスト信号に応答してアクノリッジ信号を送信する頻度を所定の期間外よりも少なくするようにしたので、バッファに記憶されている全てのデータが消去された場合でも、瞬間的に転送すべきデータが多くなることを防ぎ、メモリバスの調停を破綻しないようにすることができる。
【図面の簡単な説明】
【図1】 この発明の実施の形態1であるメモリ制御回路の構成(本発明によるメモリバスの調停方法を実施するための構成)を示す図である。
【図2】 この発明の実施の形態1で用いられるバスアービタに内蔵されているステートマシンの状態遷移を示す図である。
【図3】 この発明の実施の形態1で用いられるバスアービタの動作を説明するタイミングチャートである。
【図4】 この発明の実施の形態1で用いられる4個のバッファに記憶されているデータの数の時間的な変化を示す図である。
【図5】 この発明の実施の形態2である反転パルス生成回路及び同期微分回路の構成を示す図である。
【図6】 この発明の実施の形態2である反転パルス生成回路及び同期微分回路の動作を説明するタイミングチャートである。
【図7】 この発明の実施の形態3であるメモリ制御回路の構成(本発明によるメモリバスの調停方法を実施するための構成)を示す図である。
【図8】 この発明の実施の形態3で用いられるバスアービタに内蔵されているステートマシンの状態遷移を示す図である。
【図9】 この発明の実施の形態4であるメモリ制御回路の構成(本発明によるメモリバスの調停方法を実施するための構成)を示す図である。
【図10】 この発明の実施の形態5であるメモリ制御回路の構成(本発明によるメモリバスの調停方法を実施するための構成)を示す図である。
【図11】 この発明の実施の形態5で用いられるバスアービタに内蔵されているステートマシンの状態遷移を示す図である。
【図12】 従来のメモリ制御回路の構成を示す図である。
【図13】 従来のメモリ制御回路の動作を説明するタイミングチャートである。
【符号の説明】
1 SDRAM、 2 メモリ制御回路、 3 外部メモリバス、 4 メモリインターフェイス、 5 内部メモリバス、 6 バスアービタ、 7 第1のバッファ、 8 第1のカウンタ、 9 第1の入力端子、 10 第1のデータ転送回路、 11 第2のバッファ、 12 第2のカウンタ、 13 第2の入力端子、 14 第2のデータ転送回路、 15 第3のバッファ、 16 第3のカウンタ、 17 第3の入力端子、 18 第3のデータ転送回路、 19 第4のバッファ、 20 第4のカウンタ、 21 第4の入力端子、 22 第4のデータ転送回路、 23 SDRAM初期化コマンド発生回路、 24 リフレッシュコマンド発生回路、 25 データイネーブル信号入力端子、 26 ライトクロック入力端子、 27 リードクロック入力端子、 28 反転パルス生成回路、 29 同期微分回路、 30 データイネーブル信号出力端子、 31 第1のXORゲート、 32 第1のD−フリップフロップ、 33 第2のD−フリップフロップ、 34 第3のD−フリップフロップ、 35 第2のXORゲート、 36 メモリ制御回路、 37,37aバスアービタ、 38 第5のバッファ、 39 第5のカウンタ、 40 第3の入力端子、 41 第3の出力端子、 42 第5のデータ転送回路、 43 第6のバッファ、 44 第6のカウンタ、 45 第4の入力端子、 46 第4の出力端子、 47 第6のデータ転送回路、 48 第7のバッファ、 49 第7のカウンタ、 50 第5の入力端子、 51 第5の出力端子、 52 第7のデータ転送回路、 53 第8のバッファ、 54 第8のカウンタ、 55 第8のデータ転送回路、 56 第9のバッファ、 57 第9のカウンタ、 58 第9のデータ転送回路、 59 第10のデータ転送回路、 60 第6の入力端子、 61 第6の出力端子、 62 バスアービタ、 63 グラフィックスデータ生成回路、 64 第1のSDRAM、 65 第2のSDRAM、 66 第1の表示コントローラ、 67 第2の表示コントローラ、 68 第1のメモリバス、 69 第2のメモリバス、 70バスアービタ、 71 第1の表示装置、 72 第2の表示装置。
Claims (18)
- メモリバス及び前記メモリバスに接続されたメモリを制御するメモリ制御回路において、
前記メモリに転送するデータ及び前記メモリから転送されたデータの少なくとも一方を一時的に記憶しておく複数のバッファと、
前記複数のバッファのそれぞれに記憶されている前記データの数に対応するカウント値を持つ複数のカウンタと、
前記メモリバスを使用して、前記メモリと前記複数のバッファとの間でデータ転送を実行する複数のデータ転送回路と、
バスアービタとを備え、
前記バスアービタが、
シフトレジスタで構成された命令キューと、
前記複数のデータ転送回路のそれぞれと関連付けられた複数の状態のなかのいずれか又は命令キューと関連付けられた状態を現状態とし、一つのデータ転送回路に関連付けられた状態、又は、一つの命令キューと関連付けられた状態が終了すると、次のデータ転送回路又は次の命令キューに関連付けられた状態に遷移し、かつ、各状態が循環するように遷移するステートマシンとを内蔵し、
前記ステートマシンが持つ状態の1つを前記命令キューに関連付け、
前記複数のデータ転送回路の一部が前記ステートマシンが持つ状態に関連付けられ、前記複数のデータ転送回路の残りが前記命令キューに関連付けられ、
(1) 前記複数のデータ転送回路のそれぞれは、各データ転送回路のバッファに記憶されているデータの数に対する前記複数のカウンタのカウント値が所定カウント値以上の場合に、前記データ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、
(2) 前記ステートマシンの現状態に関連付けられたデータ転送回路がリクエスト信号を送信していれば、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送回路に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、
(3) 前記複数のデータ転送回路のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数に基づいて実行中の前記データ転送を終了し、
(4) 前記ステートマシンの現状態に関連付けられたデータ転送回路が前記リクエスト信号を送信していない場合、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送回路に前記アクノリッジ信号を送信せず、前記ステートマシンは次状態に遷移し、
(5) 前記ステートマシンが前記命令キューに関連付けられた状態に遷移した場合にのみ、前記命令キューに登録されているデータ転送命令の一部又は全部を前記命令キューの先頭から順に実行した後に前記ステートマシンは次状態に遷移し、
(6) 前記処理(1)から(5)までを繰り返す
ことを特徴とするメモリ制御回路。 - 前記処理(5)において、
(5−1) 前記バスアービタが前記命令キューに関連づけられたデータ転送回路のいずれかから前記リクエスト信号を受信した場合には、前記リクエスト信号を送信したデータ転送回路に関連付けられたデータ転送命令を命令キューの最後尾に登録し、
(5−2) 前記バスアービタは、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、
(5−3) 前記命令キューに関連づけられたデータ転送回路のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数に基づいて実行中の前記データ転送を終了し、
(5−4) 前記データ転送回路がデータ転送を終了した場合には、前記データ転送回路に関連付けられたデータ転送命令を命令キューから削除するとともに、後段の命令キューの内容を1段前にシフトし、
(5−5) 前記処理(5−1)から(5−4)までを1回以上実行する
ことを特徴とする請求項1に記載のメモリ制御回路。 - 前記処理(5−1)において前記データ転送回路がリクエスト信号を送信している場合であっても、前記リクエスト信号を送信しているデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合、前記処理(5−2)を実行せず、前記リクエスト信号を送信しているデータ転送回路のデータ転送命令を前記命令キューに登録しないことを特徴とする請求項2に記載のメモリ制御回路。
- 前記データ転送命令が命令キューの先頭に登録されている場合であっても、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合、前記処理(5−3)を実行せず、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路に対してアクノリッジ信号を送信しないことを特徴とする請求項2又は3に記載のメモリ制御回路。
- 前記ステートマシンの現状態に関連付けられた命令キューにデータ転送命令が登録されている場合であっても、前記ステートマシンの現状態以外の状態に関連付けられた特定の1つ以上のデータ転送回路がリクエスト信号を送信している場合には、前記ステートマシンは次状態に遷移し、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送回路にアクノリッジ信号を送信しないことを特徴とする請求項1から4までのいずれかに記載のメモリ制御回路。
- 前記データ転送回路がデータ転送を実行している途中であっても、前記データ転送を実行しているデータ転送回路以外の特定の1つ以上のデータ転送回路がリクエスト信号の送信を開始した場合には、前記バスアービタは前記データ転送を実行しているデータ転送回路に対して、実行中のデータ転送を終了させるように命令することを特徴とする請求項1から5までのいずれかに記載のメモリ制御回路。
- 前記複数のカウンタは、前記複数のバッファのそれぞれに対する読み出し命令、前記バッファに対する書き込み命令、前記メモリに対する読み出し命令、前記メモリに対する書き込み命令のいずれかを組み合わせて使用することによって、前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を保持することを特徴とする請求項1から6までのいずれかに記載のメモリ制御回路。
- 前記複数のカウンタのそれぞれは、前記複数のバッファに対する読み出し命令あるいは書き込み命令が発行されるたびに反転するパルスを発生する反転パルス生成回路と、前記反転パルス生成回路が発生した前記パルスのエッジを検出する微分回路とを備え、
前記複数のカウンタのそれぞれは、前記微分回路の検出結果、前記メモリに対する読み出し命令、前記メモリに対する書き込み命令のいずれかを組み合わせて使用することによって、前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を保持することを特徴とする請求項1から7までのいずれかに記載のメモリ制御回路。 - 前記複数のデータ転送回路のそれぞれは、前記複数のカウンタのカウント値が設定値以上になったとき及び設定値以下になったときのいずれかのときにリクエスト信号を発生することを特徴とする請求項1から8までのいずれかに記載のメモリ制御回路。
- メモリバスを使用して、メモリと複数のバッファとの間でデータ転送を実行する複数のデータ転送手段と、
前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を持つ複数のカウンタと、
バスアービタと
を用いて前記データ転送手段によるメモリバスの使用権を調停するメモリバスの調停方法であって、
前記バスアービタが、
シフトレジスタで構成された命令キューと、
前記複数のデータ転送手段のそれぞれと関連付けられた複数の状態のなかのいずれか又は命令キューと関連付けられた状態を現状態とし、一つのデータ転送手段に関連付けられた状態、又は、一つの命令キューと関連付けられた状態が終了すると、次のデータ転送手段又は次の命令キューに関連付けられた状態に遷移し、かつ、各状態が循環するように遷移するステートマシンとを内蔵し、
前記ステートマシンが持つ状態の1つを前記命令キューに関連付け、
前記複数のデータ転送手段の一部が前記ステートマシンが持つ状態に関連付けられ、前記複数のデータ転送手段の残りが前記命令キューに関連付けられ、
(1) 前記複数のデータ転送手段のそれぞれは、各データ転送手段のバッファに記憶されているデータの数に対する前記複数のカウンタのカウント値が所定カウント値以上の場合に、前記データ転送の開始を要求するリクエスト信号を前記バスアービタに対して送信し、
(2) 前記ステートマシンの現状態に関連付けられたデータ転送手段がリクエスト信号を送信していれば、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送手段に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、
(3) 前記複数のデータ転送手段のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数に基づいて実行中の前記データ転送を終了し、
(4) 前記ステートマシンの現状態に関連付けられたデータ転送手段が前記リクエスト信号を送信していない場合、前記バスアービタは前記ステートマシンの現状態に関連付けられたデータ転送手段に前記アクノリッジ信号を送信せず、前記ステートマシンは次状態に遷移し、
(5) 前記ステートマシンが前記命令キューに関連付けられた状態に遷移した場合にのみ、前記命令キューに登録されているデータ転送命令の一部又は全部を前記命令キューの先頭から順に実行した後に前記ステートマシンは次状態に遷移し、
(6) 前記処理(1)から(5)までを繰り返す
ことを特徴とするメモリバスの調停方法。 - 前記処理(5)において、
(5−1) 前記バスアービタが前記命令キューに関連づけられたデータ転送手段のいずれかから前記リクエスト信号を受信した場合には、前記リクエスト信号を送信したデータ転送手段に関連付けられたデータ転送命令を命令キューの最後尾に登録し、
(5−2) 前記バスアービタは、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段に対して前記データ転送の開始を許可するアクノリッジ信号を送信し、
(5−3) 前記命令キューに関連づけられたデータ転送手段のそれぞれは、前記リクエスト信号に応答して前記バスアービタからアクノリッジ信号を受信したときに前記データ転送を開始し、前記アクノリッジ信号を受信してから転送したデータの数に基づいて実行中の前記データ転送を終了し、
(5−4) 前記データ転送手段がデータ転送を終了した場合には、前記データ転送手段に関連付けられたデータ転送命令を命令キューから削除するとともに、後段の命令キューの内容を1段前にシフトし、
(5−5) 前記処理(5−1)から(5−4)までを1回以上実行する
ことを特徴とする請求項10に記載のメモリバスの調停方法。 - 前記処理(5−1)において前記データ転送手段がリクエスト信号を送信している場合であっても、前記リクエスト信号を送信しているデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合、前記処理(5−2)を実行せず、前記リクエスト信号を送信しているデータ転送手段のデータ転送命令を前記命令キューに登録しないことを特徴とする請求項11に記載のメモリバスの調停方法。
- 前記データ転送命令が命令キューの先頭に登録されている場合であっても、前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合、前記処理(5−3)を実行せず、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段に対してアクノリッジ信号を送信しないことを特徴とする請求項11又は12に記載のメモリバスの調停方法。
- 前記ステートマシンの現状態に関連付けられた命令キューにデータ転送命令が登録されている場合であっても、前記ステートマシンの現状態以外の状態に関連付けられた特定の1つ以上のデータ転送手段がリクエスト信号を送信している場合には、前記ステートマシンは次状態に遷移し、前記バスアービタは前記命令キューの先頭に登録されているデータ転送命令に関連付けられたデータ転送手段にアクノリッジ信号を送信しないことを特徴とする請求項10から13までのいずれかに記載のメモリバスの調停方法。
- 前記データ転送手段がデータ転送を実行している途中であっても、前記データ転送を実行しているデータ転送手段以外の特定の1つ以上のデータ転送手段がリクエスト信号の送信を開始した場合には、前記バスアービタは前記データ転送を実行しているデータ転送手段に対して、実行中のデータ転送を終了させるように命令することを特徴とする請求項10から14までのいずれかに記載のメモリバスの調停方法。
- 前記複数のカウンタは、前記複数のバッファのそれぞれに対する読み出し命令、前記バッファに対する書き込み命令、前記メモリに対する読み出し命令、前記メモリに対する書き込み命令のいずれかを組み合わせて使用することによって、前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を保持することを特徴とする請求項10から15までのいずれかに記載のメモリバスの調停方法。
- 前記複数のカウンタのそれぞれは、前記複数のバッファに対する読み出し命令あるいは書き込み命令が発行されるたびに反転するパルスを発生し、この発生した前記パルスのエッジを検出し、
前記複数のカウンタのそれぞれは、前記検出されたパルスのエッジ、前記メモリに対する読み出し命令、前記メモリに対する書き込み命令のいずれかを組み合わせて使用することによって、前記複数のバッファのそれぞれに記憶されているデータの数に対応するカウント値を保持することを特徴とする請求項10から16までのいずれかに記載のメモリバスの調停方法。 - 前記複数のデータ転送手段のそれぞれは、前記複数のカウンタのカウント値が設定値以上になったとき及び設定値以下になったときのいずれかのときにリクエスト信号を発生することを特徴とする請求項10から17までのいずれかに記載のメモリバスの調停方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001330155A JP3732139B2 (ja) | 2001-10-29 | 2001-10-29 | メモリ制御回路及びメモリバスの調停方法 |
US10/109,693 US6754786B2 (en) | 2001-10-29 | 2002-04-01 | Memory control circuit and method for arbitrating memory bus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001330155A JP3732139B2 (ja) | 2001-10-29 | 2001-10-29 | メモリ制御回路及びメモリバスの調停方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003132006A JP2003132006A (ja) | 2003-05-09 |
JP3732139B2 true JP3732139B2 (ja) | 2006-01-05 |
Family
ID=19145927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001330155A Expired - Fee Related JP3732139B2 (ja) | 2001-10-29 | 2001-10-29 | メモリ制御回路及びメモリバスの調停方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6754786B2 (ja) |
JP (1) | JP3732139B2 (ja) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003058272A (ja) * | 2001-08-21 | 2003-02-28 | Mitsubishi Electric Corp | 半導体装置およびそれに用いられる半導体チップ |
US6931624B1 (en) * | 2001-10-30 | 2005-08-16 | Hewlett-Packard Development Company, L.P. | Programming method and model for expressing synchronous, fine-grained parallelism |
EP1318440B1 (en) * | 2001-12-04 | 2005-08-17 | STMicroelectronics S.r.l. | Architecture and method of managing an interface based on a finite states machine |
JP3732497B2 (ja) * | 2004-01-14 | 2006-01-05 | コナミ株式会社 | メッセージ出力装置、メッセージ制御方法、および、プログラム |
JP2006252341A (ja) * | 2005-03-11 | 2006-09-21 | Canon Inc | 電子機器、制御方法、及びコンピュータプログラム |
KR100640722B1 (ko) * | 2005-10-05 | 2006-11-01 | 삼성전자주식회사 | 반도체 제어장치, 반도체 장치, 및 이들을 구비하는 시스템 |
WO2007097006A1 (ja) * | 2006-02-24 | 2007-08-30 | Fujitsu Limited | パケット送出制御装置および方法 |
US8994700B2 (en) * | 2006-03-23 | 2015-03-31 | Mark J. Foster | Artifact-free transitions between dual display controllers |
JP4895355B2 (ja) * | 2006-03-24 | 2012-03-14 | 株式会社メガチップス | メモリ制御装置 |
WO2008044231A2 (en) * | 2006-10-09 | 2008-04-17 | Sandisk Il Ltd. | Application dependent storage control |
US8479124B1 (en) | 2007-02-14 | 2013-07-02 | Xilinx, Inc. | Graphical user interface (GUI) including input files with information that determines representation of subsequent content displayed by the GUI |
US7913022B1 (en) | 2007-02-14 | 2011-03-22 | Xilinx, Inc. | Port interface modules (PIMs) in a multi-port memory controller (MPMC) |
US7711907B1 (en) * | 2007-02-14 | 2010-05-04 | Xilinx, Inc. | Self aligning state machine |
US7720636B1 (en) | 2007-02-14 | 2010-05-18 | Xilinx, Inc. | Performance monitors (PMs) for measuring performance in a system and providing a record of transactions performed |
JP5126010B2 (ja) * | 2008-11-14 | 2013-01-23 | 富士通セミコンダクター株式会社 | メモリアクセス制御回路及び画像処理装置 |
JP2011028343A (ja) * | 2009-07-22 | 2011-02-10 | Fujitsu Ltd | 演算処理装置、およびデータ転送方法 |
JP2011141580A (ja) * | 2010-01-05 | 2011-07-21 | Sony Corp | アクセス制御装置、データ処理装置、アクセス制御方法およびプログラム |
US8667197B2 (en) * | 2010-09-08 | 2014-03-04 | Intel Corporation | Providing a fine-grained arbitration system |
KR101835604B1 (ko) * | 2011-06-03 | 2018-03-07 | 삼성전자 주식회사 | 메모리를 위한 스케줄러 |
KR20130044957A (ko) * | 2011-10-25 | 2013-05-03 | 에스케이하이닉스 주식회사 | 집적회로 시스템 및 메모리 시스템의 동작방법 |
US9684512B2 (en) * | 2015-03-30 | 2017-06-20 | International Business Machines Corporation | Adaptive Map-Reduce pipeline with dynamic thread allocations |
CN113138801B (zh) * | 2021-04-29 | 2023-08-04 | 上海阵量智能科技有限公司 | 命令分发装置、方法、芯片、计算机设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3907953A1 (de) | 1989-03-11 | 1990-09-13 | Hoechst Ag | Strahlungshaertbares gemisch und daraus hergestelltes strahlungsempfindliches aufzeichnungsmaterial fuer hochenergetische strahlung |
JPH03137486A (ja) | 1989-10-20 | 1991-06-12 | Nippon Steel Corp | 粉粒体の乾燥・分級方法 |
US5907717A (en) * | 1996-02-23 | 1999-05-25 | Lsi Logic Corporation | Cross-connected memory system for allocating pool buffers in each frame buffer and providing addresses thereof |
US6098124A (en) * | 1998-04-09 | 2000-08-01 | National Instruments Corporation | Arbiter for transferring largest accumulated data block output from data buffers over serial bus |
US6205524B1 (en) | 1998-09-16 | 2001-03-20 | Neomagic Corp. | Multimedia arbiter and method using fixed round-robin slots for real-time agents and a timed priority slot for non-real-time agents |
-
2001
- 2001-10-29 JP JP2001330155A patent/JP3732139B2/ja not_active Expired - Fee Related
-
2002
- 2002-04-01 US US10/109,693 patent/US6754786B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6754786B2 (en) | 2004-06-22 |
US20030084255A1 (en) | 2003-05-01 |
JP2003132006A (ja) | 2003-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3732139B2 (ja) | メモリ制御回路及びメモリバスの調停方法 | |
EP0735490A1 (en) | Data transfer device and video game apparatus using the device | |
US6148357A (en) | Integrated CPU and memory controller utilizing a communication link having isochronous and asynchronous priority modes | |
JPH0635850A (ja) | コンピュータ・システムおよびシステム拡張装置 | |
TWI352935B (en) | Work based clock management for display sub-system | |
US5872936A (en) | Apparatus for and method of arbitrating bus conflicts | |
JPH07105146A (ja) | 共有メモリ装置 | |
TW201423403A (zh) | 共用資源的存取請求之有效率處理 | |
US20020152360A1 (en) | System integrating agents having different resource-accessing schemes | |
JPH0622008B2 (ja) | 同期化回路 | |
US6199132B1 (en) | Communication link with isochronous and asynchronous priority modes | |
US6658511B2 (en) | Data processing processor | |
EP1238342B1 (en) | Apparatus for memory resource arbitration based on dedicated time slot allocation | |
US20110314197A1 (en) | Data processing system | |
US20080162746A1 (en) | Semiconductor apparatus and buffer control circuit | |
JP4696003B2 (ja) | データ転送回路 | |
EP0341670B1 (en) | Processing time allocation system and method | |
JP4898527B2 (ja) | リソース使用管理装置、リソース使用管理システム及びリソース使用管理装置の制御方法 | |
US7747806B2 (en) | Resource use management device, resource use management system, and control method for a resource use management device | |
US6154202A (en) | Image output apparatus and image decoder | |
JPH07261703A (ja) | 液晶表示制御装置 | |
JPH11175464A (ja) | 調停装置および方法 | |
JP2001209573A (ja) | メモリアドレス変換装置 | |
JP2565589B2 (ja) | フレームバッファアクセス制御方法と画像制御装置および画像制御システム | |
JPH0215425Y2 (ja) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050705 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050712 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050908 |
|
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: 20051011 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051011 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091021 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091021 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101021 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111021 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121021 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131021 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |