JP2005122376A - データ転送制御装置 - Google Patents
データ転送制御装置Info
- Publication number
- JP2005122376A JP2005122376A JP2003355119A JP2003355119A JP2005122376A JP 2005122376 A JP2005122376 A JP 2005122376A JP 2003355119 A JP2003355119 A JP 2003355119A JP 2003355119 A JP2003355119 A JP 2003355119A JP 2005122376 A JP2005122376 A JP 2005122376A
- Authority
- JP
- Japan
- Prior art keywords
- data
- address
- transfer
- image data
- control circuit
- 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.)
- Pending
Links
Images
Landscapes
- Bus Control (AREA)
- Information Transfer Systems (AREA)
Abstract
【課題】 データ転送速度を向上させ、かつ回路の簡素化を図ることのできるデータ転送制御装置を提供する。
【解決手段】 バッファリング機構12の内部RAM122は、画像データの転送先であるメモリの実アドレスに対応した複数の領域を有し、それぞれの領域に書込制御回路121による書き込みと読出制御回路124による読み出しを同時に実行することが可能である。書込制御回路121は、内部RAM122に画像データを書き込む際には、内部RAM122におけるアドレスが画像データの転送先であるメモリの実アドレスに対応するようにして書き込む。
【選択図】 図2
【解決手段】 バッファリング機構12の内部RAM122は、画像データの転送先であるメモリの実アドレスに対応した複数の領域を有し、それぞれの領域に書込制御回路121による書き込みと読出制御回路124による読み出しを同時に実行することが可能である。書込制御回路121は、内部RAM122に画像データを書き込む際には、内部RAM122におけるアドレスが画像データの転送先であるメモリの実アドレスに対応するようにして書き込む。
【選択図】 図2
Description
本発明は、バスを介して外部のメモリとのデータ転送を行う技術に関する。
コンピュータシステムにおいては、CPU(Central Processing Unit)の負荷を低減させてデータの転送速度を向上させるために、データの転送先であるメモリとI/O制御部がバスを介して直接データ転送を行うDMA(Direct Memory Access)転送が一般的に行われている。このようなDMA転送を行う場合であっても、例えばPCI(Peripheral Components Interconnect)バスのような汎用バスを用いたデータ転送においては、そのバスによって実現可能なデータ転送速度の上限がボトルネックとなることがある。このような問題を回避するために、データの転送速度を向上させるためのさまざまな技術が考案されている。
このような技術の一例として、バスのバウンダリとメモリのバウンダリを一致させ、データ転送の回数を抑える技術がある。なお、バスのバウンダリとは、そのバス上を一度に転送可能なデータの量を意味し、メモリのバウンダリとは、そのメモリが一度に記憶することが可能なデータの量を意味している。
例えば、バスとメモリのバウンダリが同じ4バイトであるコンピュータシステムにおいて、6バイトのデータをDMA転送する場合を考える(図8参照)。例えば、転送すべき6バイトのデータの先頭がバスのバウンダリ境界と一致していれば、1回目に4バイトのデータが転送され、そして2回目に残りの2バイトのデータが転送されるので、合計2回のデータ転送で6バイトのデータを転送することができる(図8(1))。なお、ここでバウンダリ境界とは、それぞれのバウンダリ間の区切りを意味している。
しかし、1バイト目のデータと2バイト目のデータの間がバスのバウンダリ境界と一致していると、1回目に1バイトのデータが転送され、2回目に次の4バイトのデータが転送され、更に3回目に残りの1バイトのデータが転送されることになるので、6バイトのデータを転送するのに3回のデータ転送を行う必要がある(図8(2))。つまり、転送すべきデータのどの部分がバウンダリ境界に一致するかによってデータ転送回数が増えてしまうことがあり、その結果バス上のトラフィック増加によるコンピュータシステムの性能低下を招く原因となっていた。
例えば、バスとメモリのバウンダリが同じ4バイトであるコンピュータシステムにおいて、6バイトのデータをDMA転送する場合を考える(図8参照)。例えば、転送すべき6バイトのデータの先頭がバスのバウンダリ境界と一致していれば、1回目に4バイトのデータが転送され、そして2回目に残りの2バイトのデータが転送されるので、合計2回のデータ転送で6バイトのデータを転送することができる(図8(1))。なお、ここでバウンダリ境界とは、それぞれのバウンダリ間の区切りを意味している。
しかし、1バイト目のデータと2バイト目のデータの間がバスのバウンダリ境界と一致していると、1回目に1バイトのデータが転送され、2回目に次の4バイトのデータが転送され、更に3回目に残りの1バイトのデータが転送されることになるので、6バイトのデータを転送するのに3回のデータ転送を行う必要がある(図8(2))。つまり、転送すべきデータのどの部分がバウンダリ境界に一致するかによってデータ転送回数が増えてしまうことがあり、その結果バス上のトラフィック増加によるコンピュータシステムの性能低下を招く原因となっていた。
この問題を解決するものとして、例えば特許文献1には、転送データをバッファリングするバッファリング機構とアドレスの変換回路及び復元回路とを備えたメモリ制御回路が開示されている。このメモリ制御回路は、バッファリング機構にバッファリングされたデータがメモリのバウンダリに達する度にこれをバス経由でメモリに転送する用になっている。このようなメモリ制御回路により、転送先であるメモリのバウンダリとバスのバウンダリとが一致しないときに転送速度が低下する問題を解決している。
しかし、上述の特許文献1に記載の技術においては、以下の点が懸念される。
第一に、上述の方法ではバッファリング機構がデータをバウンダリに達するまでバッファリングした後にそのデータを転送し、これを転送し終えたら次に転送すべきデータをバッファリングする、というように、バッファリングと転送処理とをそれぞれ別に行っているため、バッファリングしている期間にはデータ転送を行うことができない。よって、転送速度が制限される点が問題となる。
そして第二に、上述の方法では、アドレスの復元処理を要するので、その処理のための時間を要するとともに、回路全体として複雑化または大型化するという点が問題となる。
本発明はこのような背景の下になされたものであり、その目的は、データ転送速度を向上させ、かつ回路の簡素化を図ることのできるデータ転送制御装置を提供することにある。
第一に、上述の方法ではバッファリング機構がデータをバウンダリに達するまでバッファリングした後にそのデータを転送し、これを転送し終えたら次に転送すべきデータをバッファリングする、というように、バッファリングと転送処理とをそれぞれ別に行っているため、バッファリングしている期間にはデータ転送を行うことができない。よって、転送速度が制限される点が問題となる。
そして第二に、上述の方法では、アドレスの復元処理を要するので、その処理のための時間を要するとともに、回路全体として複雑化または大型化するという点が問題となる。
本発明はこのような背景の下になされたものであり、その目的は、データ転送速度を向上させ、かつ回路の簡素化を図ることのできるデータ転送制御装置を提供することにある。
上述の課題を解決するために、本発明のデータ転送制御装置は、バスを介して接続されたメモリにデータを転送し、転送データに予め割り当てられているアドレスを前記メモリにおいて定義されている実アドレスに変換するアドレス変換手段と、前記メモリにおけるバウンダリと同じデータ容量毎に区切られた複数の記憶領域であって、前記実アドレスの少なくとも一部がそれぞれの記憶領域において用いられるアドレスとして定義されている記憶領域を有する記憶手段と、前記複数の記憶領域のうち転送データが記憶されていない記憶領域に対して、前記アドレス変換手段によって変換された前記実アドレスの少なくとも一部のアドレスを用いて前記転送データを順次記憶させる書込手段と、前記複数の記憶領域のいずれかの記憶領域において記憶すべき量の転送データが記憶されると、該転送データを該記憶領域から順次読み出し、読み出した転送データを該データに対応する実アドレスと共に前記バスを介して前記メモリに転送する読出・転送手段とを備える。
これにより、データ転送速度を向上させることが可能となる。
これにより、データ転送速度を向上させることが可能となる。
また、本発明のデータ転送制御装置は、より好ましい態様においては、前記記憶領域に定義されたアドレスは前記実アドレスの一部を用いて定義されており、前記記憶領域に記憶された該転送データの先頭に当たるデータに対応する実アドレスである先頭アドレスと、該転送データのデータサイズとが対応づけて記述された管理テーブルを備え、前記読出・転送手段は読み出した転送データに対応する実アドレスを、前記管理テーブルに記述されている前記先頭アドレスと前記データサイズとに基づいて求め、求めた実アドレスを前記転送データと共に前記バスを介して前記メモリに転送する。
この態様によれば、転送データは先頭アドレス以降のアドレスを指定することなく連続的にデータの書き込みと読み出しを行うことができ、データ転送速度をより向上させることが可能となる。
この態様によれば、転送データは先頭アドレス以降のアドレスを指定することなく連続的にデータの書き込みと読み出しを行うことができ、データ転送速度をより向上させることが可能となる。
以下、図面を参照しながら、本発明の一実施形態について詳細に説明する。
なお、本実施形態においては、アドレス等を表現するために16進数(hexadecimal)の値を用いるが、これを10進数の値と区別するために、16進数の値を例えば「0FFh」のように、末尾にアルファベットの「h」を付記して表現する。
なお、本実施形態においては、アドレス等を表現するために16進数(hexadecimal)の値を用いるが、これを10進数の値と区別するために、16進数の値を例えば「0FFh」のように、末尾にアルファベットの「h」を付記して表現する。
(1)構成
図1は、本実施形態に係るコンピュータシステム100の構成を示すブロック図である。同図に示されるように、コンピュータシステム100は、データ転送制御装置1と、I/O制御部2と、バス3と、メモリ制御部4と、メモリ5とを備える。
I/O制御部2はデータ転送制御装置1を介してバス3と接続されており、コンピュータシステム100内部または外部からのデータ転送を制御する。バス3は例えばPCIバスであり、コンピュータシステム100内部において各デバイス間でデータを授受するための経路である。メモリ制御部4は主記憶装置であるメモリ5へのデータの入出力を制御する。メモリ5のバウンダリは、本実施形態においては256バイトとする。
図1は、本実施形態に係るコンピュータシステム100の構成を示すブロック図である。同図に示されるように、コンピュータシステム100は、データ転送制御装置1と、I/O制御部2と、バス3と、メモリ制御部4と、メモリ5とを備える。
I/O制御部2はデータ転送制御装置1を介してバス3と接続されており、コンピュータシステム100内部または外部からのデータ転送を制御する。バス3は例えばPCIバスであり、コンピュータシステム100内部において各デバイス間でデータを授受するための経路である。メモリ制御部4は主記憶装置であるメモリ5へのデータの入出力を制御する。メモリ5のバウンダリは、本実施形態においては256バイトとする。
図2は、データ転送制御装置1の内部構成を示すブロック図である。以下、同図を参照しつつ、データ転送制御装置1の機能を詳説する。
アドレス変換回路11は、I/O制御部2から出力されたデータに対し、当該データにメモリ5において定義されている実アドレスに対応したアドレスを付与する。
バス制御回路13はデータ転送制御装置1に対するバス3のアクセス権を制御し、バッファリング機構12にバッファリングされているデータをメモリ5へと転送する。
アドレス変換回路11は、I/O制御部2から出力されたデータに対し、当該データにメモリ5において定義されている実アドレスに対応したアドレスを付与する。
バス制御回路13はデータ転送制御装置1に対するバス3のアクセス権を制御し、バッファリング機構12にバッファリングされているデータをメモリ5へと転送する。
バッファリング機構12は、書込制御回路121と、内部RAM(Random Access Memory)122と、管理テーブル123と、読出制御回路124とを備える。
内部RAM122はデュアルポートRAMであり、異なる2つのデバイスからの同時アクセスが可能である。同図に示されるように、本実施形態では内部RAM122は書込制御回路121と読出制御回路124とにより同時にアクセスされることが可能になっている。このため、本実施形態においては以下に説明するように、メモリ5を2つの記憶領域に分割し、データの格納されている一方の記憶領域からデータが読み出されると同時に、もう一方の記憶領域にデータが書き込まれるようにしている。
内部RAM122はデュアルポートRAMであり、異なる2つのデバイスからの同時アクセスが可能である。同図に示されるように、本実施形態では内部RAM122は書込制御回路121と読出制御回路124とにより同時にアクセスされることが可能になっている。このため、本実施形態においては以下に説明するように、メモリ5を2つの記憶領域に分割し、データの格納されている一方の記憶領域からデータが読み出されると同時に、もう一方の記憶領域にデータが書き込まれるようにしている。
内部RAM122のメモリ空間には「000h」から「1FFh」のアドレスが定義されており、それぞれのアドレスに1バイトのデータが格納される。すなわち、内部RAM122のメモリ空間は512バイトであり、メモリ5のバウンダリのちょうど2倍となっている。以下においては、このメモリ領域を2つの領域に分割し、アドレス「000h」から「0FFh」で表されるメモリ領域を「領域0」と呼び、アドレス「100h」から「1FFh」で表されるメモリ領域を「領域1」と呼ぶこととする。また、上述のアドレスの上位1ビットは「0」或いは「1」のいずれかであり、それぞれが「領域0」と「領域1」に対応している。
管理テーブル123は、上述の内部RAM122の領域に応じた形式で形成されており、領域0に対応した「テーブルA」と、領域1に対応した「テーブルB」が形成されている。これらのテーブルには、対応するそれぞれの領域に書き込まれるアドレスが連続するデータの先頭位置のアドレスと、そのデータのサイズと、対応するそれぞれの領域からデータを読み出しても良いか否かを示す有効フラグとが記述できるようになっている。
図3は、管理テーブル123のテーブルAを例示した図である。同図を例に説明すると、いまテーブルAには、領域0にはアドレス「8000CB85h」からデータの書き込みが連続して行われており、領域0内に書き込まれているデータのサイズは合計で「123バイト」であり、有効フラグが「ON」となっていて、読出制御回路124による当該データの読み出しが可能な状態であることを示している。
図3は、管理テーブル123のテーブルAを例示した図である。同図を例に説明すると、いまテーブルAには、領域0にはアドレス「8000CB85h」からデータの書き込みが連続して行われており、領域0内に書き込まれているデータのサイズは合計で「123バイト」であり、有効フラグが「ON」となっていて、読出制御回路124による当該データの読み出しが可能な状態であることを示している。
ここで、再び図2を参照し、データ転送制御装置1の説明を続ける。
書込制御回路121は、I/O制御部2から出力されたデータと、アドレス変換回路11によりそのデータに付与されたアドレスとを取得し、これらの情報を内部RAM122及び管理テーブル123へ書き込む。書込制御回路121は、内部RAM122にデータを順次書き込んでいき、書き込んだデータのアドレスが「0FFh」または「1FFh」に達するか、或いはデータが末尾であることを意味する信号(以下、「END信号」と称する)をI/O制御部2から受信すると、管理テーブル123の有効フラグを「ON」にする。
読出制御回路124は管理テーブル123の有効フラグの値を監視し、有効フラグが「ON」となっているテーブルに対応した領域に格納されたデータを内部RAM122から読み出し、読み出したデータをバス制御回路13へと出力する。また、データの読み出しが終わったら、読出制御回路124は読み出しを行った領域に対応するテーブルの有効フラグの値を「OFF」にする。
書込制御回路121は、I/O制御部2から出力されたデータと、アドレス変換回路11によりそのデータに付与されたアドレスとを取得し、これらの情報を内部RAM122及び管理テーブル123へ書き込む。書込制御回路121は、内部RAM122にデータを順次書き込んでいき、書き込んだデータのアドレスが「0FFh」または「1FFh」に達するか、或いはデータが末尾であることを意味する信号(以下、「END信号」と称する)をI/O制御部2から受信すると、管理テーブル123の有効フラグを「ON」にする。
読出制御回路124は管理テーブル123の有効フラグの値を監視し、有効フラグが「ON」となっているテーブルに対応した領域に格納されたデータを内部RAM122から読み出し、読み出したデータをバス制御回路13へと出力する。また、データの読み出しが終わったら、読出制御回路124は読み出しを行った領域に対応するテーブルの有効フラグの値を「OFF」にする。
(2)動作例
以上に示された構成のもと、本実施形態のデータ転送制御装置1が実行する動作について説明する。なお、以下においては、画像形成装置内部に備わっているデータ転送制御装置1が、本装置外部より受け取った画像データをメモリ5へ転送する場合の動作を例として説明する。
以上に示された構成のもと、本実施形態のデータ転送制御装置1が実行する動作について説明する。なお、以下においては、画像形成装置内部に備わっているデータ転送制御装置1が、本装置外部より受け取った画像データをメモリ5へ転送する場合の動作を例として説明する。
図4は、以下の動作例の説明に用いられる画像データを示した図である。この画像データは、ある用紙Pの左上端を原点Oとして、座標(X1,Y1)の位置に描画されるべき画像データである。座標の単位はピクセルであり、この画像データは1ピクセル当たり1バイトのデータを有している。データ転送制御装置1は、I/O制御部2が受信したこの画像データを、メモリ5へと転送する。なお、以下においては、画像データの各ピクセルの位置を「座標データ」と称する。すなわち、同図に示された画像データの左上端にあるピクセルの座標データは(X1,Y1)である。
メモリ5においては、この画像データを記憶するために2次元のアドレス空間が定義されている。すなわち、メモリ5には、同図の画像データに対して主走査方向にX軸、副走査方向にY軸が定義されている。このようにすると、メモリ5におけるビットの並びがそのまま用紙Pに印刷されたときのピクセルの並びと一致する。
メモリ5においては、この画像データを記憶するために2次元のアドレス空間が定義されている。すなわち、メモリ5には、同図の画像データに対して主走査方向にX軸、副走査方向にY軸が定義されている。このようにすると、メモリ5におけるビットの並びがそのまま用紙Pに印刷されたときのピクセルの並びと一致する。
また、画像データは同図の主走査方向に対して連続したデータであり、通常256バイトをひとつの単位として送信される。以下においては、この区切られた画像データの単位のことを「ブロック」と称する。なお、このようにブロックを定義した場合、画像データの主走査方向のピクセル数が256の整数倍である場合を除き、連続するブロックの最終端のブロックの画像データは256バイトに満たない。また、画像データの総容量が256バイトに満たないこともある。このため、1ブロックの画像データが必ずしも256バイトであるとは限らない。
図5はデータ書き込み時におけるデータ転送制御装置1の動作を説明するためのフローチャートであり、以下、同図を参照しつつ説明する。
データ転送制御装置1は、まず、I/O制御部2よりデータを受信することで本処理を開始する(ステップSa1)。I/O制御部2はこのとき、ブロックの先頭に当たるピクセル(以下、これを「先頭ピクセル」と称する)の座標データをアドレス変換回路11に送信し、画像データをブロック単位でバッファリング機構12内部の書込制御回路121に順次送信する。
データ転送制御装置1は、まず、I/O制御部2よりデータを受信することで本処理を開始する(ステップSa1)。I/O制御部2はこのとき、ブロックの先頭に当たるピクセル(以下、これを「先頭ピクセル」と称する)の座標データをアドレス変換回路11に送信し、画像データをブロック単位でバッファリング機構12内部の書込制御回路121に順次送信する。
座標データを受信したアドレス変換回路11はこの座標データに基づき、当該ブロック(ブロック1とする)の先頭ピクセルの位置を計算し、この計算結果に基づいてメモリ5の実アドレスである32ビットのアドレスAddrを求める(ステップSa2)。まずは、先頭ピクセルの位置の計算方法を以下に示す。
図6はアドレス変換回路11が先頭ピクセルの位置を計算する方法を説明するための図である。同図においては、例として、用紙Pは主走査方向(すなわち図中横方向)のピクセル数が「1000」であるとし、先頭ピクセルの座標データは(100,50)であるとする。
このとき、第0行のピクセルについて原点Oから主走査方向に見ると、ピクセルp0からピクセルp999までの1000個のピクセルが列をなしている。ここで、原点Oの部分のピクセルp0を「0番目」のピクセル、その右隣のピクセルp1を「1番目」のピクセルとし、以下同様にして用紙Pの右端のピクセルp999を「999番目」のピクセルとする。
続いて、第1行のピクセルについて同様に見ると、ピクセルp1000からピクセルp1999までの1000個のピクセルが列をなしている。そして、このピクセルp1000を「1000番目」のピクセル、その右隣のピクセルp1001を「1001番目」のピクセルとし、以下同様にしてピクセルp1999を「1999番目」のピクセルとする。
このようにしてピクセルの位置を定めていくと、(100,50)の位置にある先頭ピクセルは、第52行の左から101番目にあることがわかる。この場合の先頭ピクセルの位置を、「52101番目」とする。
図6はアドレス変換回路11が先頭ピクセルの位置を計算する方法を説明するための図である。同図においては、例として、用紙Pは主走査方向(すなわち図中横方向)のピクセル数が「1000」であるとし、先頭ピクセルの座標データは(100,50)であるとする。
このとき、第0行のピクセルについて原点Oから主走査方向に見ると、ピクセルp0からピクセルp999までの1000個のピクセルが列をなしている。ここで、原点Oの部分のピクセルp0を「0番目」のピクセル、その右隣のピクセルp1を「1番目」のピクセルとし、以下同様にして用紙Pの右端のピクセルp999を「999番目」のピクセルとする。
続いて、第1行のピクセルについて同様に見ると、ピクセルp1000からピクセルp1999までの1000個のピクセルが列をなしている。そして、このピクセルp1000を「1000番目」のピクセル、その右隣のピクセルp1001を「1001番目」のピクセルとし、以下同様にしてピクセルp1999を「1999番目」のピクセルとする。
このようにしてピクセルの位置を定めていくと、(100,50)の位置にある先頭ピクセルは、第52行の左から101番目にあることがわかる。この場合の先頭ピクセルの位置を、「52101番目」とする。
アドレス変換回路11は、上述のようにして求められた先頭ピクセルの位置から、まず先頭ピクセルのアドレスAddrの下位24ビットを決定する。例えば上述のように先頭ピクセルの位置が「52101番目」であれば、この「52101」を16進数で表した「00CB85h」がアドレスAddrの下位24ビットに相当する。
続いてアドレス変換回路11は、上述の下位24ビットのアドレスに上位8ビットを付加することで、32ビットのアドレスAddrを完成させる。ここにおいて、上述の上位8ビットはベースアドレスであり、各デバイスを認識するために設定されている固有のアドレスである。ここでは、メモリ5のベースアドレスを「80h」であるとする。
このようにして、アドレス変換回路11は先頭ピクセルのアドレスAddrを求める。すなわち、上述の例においては、(100,50)の位置にある先頭ピクセルのアドレスAddrは、「8000CB85h」となる。この先頭ピクセルのアドレスAddrを、以下では「先頭アドレス」と称する。1つのブロックの画像データは、主走査方向に連続したピクセルであるので、ブロックの先頭アドレスがわかれば以降のピクセルのアドレスは先頭アドレスにピクセル数を加算した値として求めることができる。
続いてアドレス変換回路11は、上述の下位24ビットのアドレスに上位8ビットを付加することで、32ビットのアドレスAddrを完成させる。ここにおいて、上述の上位8ビットはベースアドレスであり、各デバイスを認識するために設定されている固有のアドレスである。ここでは、メモリ5のベースアドレスを「80h」であるとする。
このようにして、アドレス変換回路11は先頭ピクセルのアドレスAddrを求める。すなわち、上述の例においては、(100,50)の位置にある先頭ピクセルのアドレスAddrは、「8000CB85h」となる。この先頭ピクセルのアドレスAddrを、以下では「先頭アドレス」と称する。1つのブロックの画像データは、主走査方向に連続したピクセルであるので、ブロックの先頭アドレスがわかれば以降のピクセルのアドレスは先頭アドレスにピクセル数を加算した値として求めることができる。
先頭アドレスを算出したら、アドレス変換回路11はこの先頭アドレスをバッファリング機構12内部の書込制御回路121に供給する。書込制御回路121は、この先頭アドレスとステップSa1で受信したブロック1の画像データとに基づき、次のような処理を行う。
まず、書込制御回路121は、管理テーブル123のうちの画像データを書き込むテーブル(この場合テーブルA)に、その先頭アドレスを記録する(ステップSa3)。
まず、書込制御回路121は、管理テーブル123のうちの画像データを書き込むテーブル(この場合テーブルA)に、その先頭アドレスを記録する(ステップSa3)。
先頭アドレスを記録したら、書込制御回路121は、先頭ピクセルの画像データを内部RAM122の領域0に書き込む(ステップSa4)。このとき書込制御回路121は、それぞれのピクセルのデータのアドレスAddrの下位8ビットを参照し、内部RAM122のアドレスがアドレスAddrの下位8ビットと一致する領域に画像データを書き込む。すなわち、上述の例を用いれば、アドレスAddrが「8000CB85h」である先頭ピクセルの画像データは、内部RAM122の「085h」の領域に書き込まれる。
その後、書込制御回路121は、画像データが終了しEND信号を受信するか、或いは内部RAM122のアドレス「0FFh」に画像データが達するまで、後続の画像データを順次内部RAM122の領域0に書き込んでいく(ステップSa5;NO,ステップSa6;NO)。
そして、書込制御回路121がブロック1の画像データを順次書き込んでいき、内部RAM122のアドレス「0FFh」にアドレスAddrが「8000CBFFh」であるデータを書き込んだ時点で(ステップSa6;YES)、書込制御回路121は一旦データの書き込みを停止する。そして、ここまでに書き込んだ画像データのデータサイズ(この場合123バイト)を、管理テーブル123のうちの画像データを書き込んだアドレスに応じたテーブル(この場合テーブルA)に記録し(ステップSa7)、このテーブルの有効フラグを「ON」にする(ステップSa8)。つまり、この時点で、内部RAM122の領域0は読出制御回路124によるデータ読み出しが可能な状態となる。この状態になると、読出制御回路124は画像データの読み出しを開始するが、これと同時に書込制御回路121では、書き込み対象の領域を切り替えて(ステップSa9)、残りの画像データを未使用の領域(この場合領域1)に書き込む。読出制御回路124の動作説明は後述するとし、まずは書込制御回路121の動作について説明する。
そして、書込制御回路121がブロック1の画像データを順次書き込んでいき、内部RAM122のアドレス「0FFh」にアドレスAddrが「8000CBFFh」であるデータを書き込んだ時点で(ステップSa6;YES)、書込制御回路121は一旦データの書き込みを停止する。そして、ここまでに書き込んだ画像データのデータサイズ(この場合123バイト)を、管理テーブル123のうちの画像データを書き込んだアドレスに応じたテーブル(この場合テーブルA)に記録し(ステップSa7)、このテーブルの有効フラグを「ON」にする(ステップSa8)。つまり、この時点で、内部RAM122の領域0は読出制御回路124によるデータ読み出しが可能な状態となる。この状態になると、読出制御回路124は画像データの読み出しを開始するが、これと同時に書込制御回路121では、書き込み対象の領域を切り替えて(ステップSa9)、残りの画像データを未使用の領域(この場合領域1)に書き込む。読出制御回路124の動作説明は後述するとし、まずは書込制御回路121の動作について説明する。
上述の例では、アドレスAddrが「8000CB85h」であるピクセルから「8000CBFFh」であるピクセルまでの合計123バイトの画像データが領域0に書き込まれた。ということは、1つのブロック(256バイト)の画像データのうち、アドレスAddrが「8000CC00h」であるピクセルから「8000CC84h」であるピクセルまでの133バイトの画像データが、まだ内部RAM122に書き込まれていないことになる。書込制御回路121は、この残りの133バイトの画像データを内部RAM122の領域1に書き込む。具体的な動作は上述の領域0の場合と同様なので省略するが、書込制御回路121は、アドレスAddrが「8000CC00h」であるピクセルの画像データを内部RAM122のアドレス「100h」の領域に書き込み、以後、アドレスAddrが「8000CC84h」であるピクセルの画像データに至るまで、順次内部RAM122の領域1に書き込んでいく。このとき管理テーブル123のテーブルBには、先頭アドレスとして「8000CC00h」が記録される。
アドレスAddrが「8000CC84h」であるピクセルの画像データを書き込んだら、書込制御回路121はブロック1の次のブロック(ブロック2とする)の画像データを、ブロック1の場合と同様にして書き込む。ブロック1とブロック2は連続しているので、ブロック2の先頭アドレスは「8000CC85h」である。領域1には、ブロック2の画像データのうち、アドレスAddrが「8000CC85h」から「8000CCFFh」までの123バイトの画像データが書き込まれる。残りの133バイトの画像データは、領域0に既に書き込まれている画像データが読出制御回路124によって読み出され、領域0が書き込み可能な状態になった後でここに書き込まれる。
この時点で、領域1はアドレス「1FFh」までの256バイト全てに画像データが書き込まれた状態となる。そのため、管理テーブル123のテーブルBに書き込まれるデータは、先頭アドレスが「8000CC00h」でデータサイズが「256バイト」である。また、書込制御回路121は、この256バイトの画像データの書き込みが終了したら、管理テーブル123のテーブルBの有効フラグを「ON」にする。
この時点で、領域1はアドレス「1FFh」までの256バイト全てに画像データが書き込まれた状態となる。そのため、管理テーブル123のテーブルBに書き込まれるデータは、先頭アドレスが「8000CC00h」でデータサイズが「256バイト」である。また、書込制御回路121は、この256バイトの画像データの書き込みが終了したら、管理テーブル123のテーブルBの有効フラグを「ON」にする。
以降も同様にして、連続するブロックの画像データが、書き込まれる領域を切り替えながら最終端のブロックまで順次書き込まれていく。そして、最終端のブロックの末尾まで画像データが書き込まれ、END信号を受信すると(ステップSa5;YES)、書込制御回路121は、画像データを書き込んでいた領域に対応したテーブルに書き込んだ画像データのデータサイズを記録し(ステップSa10)、有効フラグを「ON」にする(ステップSa11)ことで、処理を終了させる。
続いて、読出制御回路124の動作について説明する。
読出制御回路124は管理テーブル123の有効フラグを監視しており、この有効フラグが「ON」になると当該テーブルに対応した領域の画像データの読み出しを開始する。ただし、一方のテーブルに対応した領域の画像データを読み出している間に他方のテーブルの有効フラグが「ON」になったときには、読出制御回路124は既に読み出しを行っている領域の画像データを全て読み出すまでは、他方の領域の画像データの読み出しを行わない。
上述の例ではまずテーブルAの有効フラグが先に「ON」となるので、読出制御回路124はまずテーブルAに対応した領域0の画像データを読み出す。領域0の画像データを読み出し、この画像データをバス制御回路13を介してメモリ5に転送するための処理は以下のように行われる。
読出制御回路124は管理テーブル123の有効フラグを監視しており、この有効フラグが「ON」になると当該テーブルに対応した領域の画像データの読み出しを開始する。ただし、一方のテーブルに対応した領域の画像データを読み出している間に他方のテーブルの有効フラグが「ON」になったときには、読出制御回路124は既に読み出しを行っている領域の画像データを全て読み出すまでは、他方の領域の画像データの読み出しを行わない。
上述の例ではまずテーブルAの有効フラグが先に「ON」となるので、読出制御回路124はまずテーブルAに対応した領域0の画像データを読み出す。領域0の画像データを読み出し、この画像データをバス制御回路13を介してメモリ5に転送するための処理は以下のように行われる。
図7はデータ読み出し時における読出制御回路124の動作を説明するためのフローチャートであり、以下、同図を参照しつつ説明する。なお、以下の説明においては、まず上述の領域0の画像データ、すなわち先頭アドレスが「8000CB85h」であり、対応する内部RAM122におけるアドレスが「085h」である画像データから読み出す場合を例にして説明する。
まず、データ転送制御装置1の読出制御回路124は、内部RAM122のアドレス「085h」の画像データ、すなわち先頭ピクセルの画像データを読み出し、これを管理テーブル123のテーブルAに記憶された先頭アドレス「8000CB85h」と対応づける(ステップSb1)。これにより、アドレス「085h」の画像データのメモリ5における実アドレスが得られる。そして読出制御回路124は、この実アドレス「8000CB85h」の画像データを一時的に記憶する。
上述のように実アドレス「8000CB85h」の画像データを読み出したら、続いて読出制御回路124は、アドレス「085h」の画像データ以降の画像データを読み出し、順次実アドレスを求めていく(ステップSb2)。アドレス「085h」の画像データ以降の実アドレスは、先頭アドレスの値に対して順次「1」を加算することで求められる。
そして、読出制御回路124は、このような処理をテーブルAに記憶されたデータサイズ、すなわち123バイト分だけ行う。すなわち、読出制御回路124はステップSb2の処理の後にその時点で読み出している画像データのデータサイズが123バイトであるかどうかを判断し(ステップSb3)、これが否定的であれば上述のステップSb2の処理を繰り返す。
また、ステップSb3の判断が肯定的、すなわち読み出した画像データがテーブルAに記憶されたデータサイズ(123バイト)に達したら、これは領域0に記憶された画像データをすべて読み出したことを意味しているので、読出制御回路124はテーブルAの有効フラグを「OFF」に書き換え、領域0をデータ書き込み可能な状態とする(ステップSb4)。
上述のように実アドレス「8000CB85h」の画像データを読み出したら、続いて読出制御回路124は、アドレス「085h」の画像データ以降の画像データを読み出し、順次実アドレスを求めていく(ステップSb2)。アドレス「085h」の画像データ以降の実アドレスは、先頭アドレスの値に対して順次「1」を加算することで求められる。
そして、読出制御回路124は、このような処理をテーブルAに記憶されたデータサイズ、すなわち123バイト分だけ行う。すなわち、読出制御回路124はステップSb2の処理の後にその時点で読み出している画像データのデータサイズが123バイトであるかどうかを判断し(ステップSb3)、これが否定的であれば上述のステップSb2の処理を繰り返す。
また、ステップSb3の判断が肯定的、すなわち読み出した画像データがテーブルAに記憶されたデータサイズ(123バイト)に達したら、これは領域0に記憶された画像データをすべて読み出したことを意味しているので、読出制御回路124はテーブルAの有効フラグを「OFF」に書き換え、領域0をデータ書き込み可能な状態とする(ステップSb4)。
この時点で、256バイトであるブロック1の画像データのうち、領域0に記憶されていた123バイト分が読み出されたこととなる。読出制御回路124はブロック1の画像データをすべて読み出した状態になってからバス制御回路13へと画像データを転送するので、続いて読出制御回路124はテーブルの切り替えを行い、もう一方の領域1の画像データの読み込みに備える(ステップSb5)。そして、読出制御回路124は1ブロック分の画像データが読み出されたか否かを判断するが(ステップSb6)、この時点ではこの判断は否定的である。そのため、読出制御回路124はステップSb1からの処理をテーブルBのデータと領域1の画像データに対して行う。
領域1の読み込みは、上述した領域0の読み込み処理と同様である。すなわち、読出制御回路124はアドレス「100h」の画像データを読み出し、その実アドレス(8000CC00h)を求め、アドレス「100h」以降の画像データについても同様の処理を、読み出した画像データのデータサイズがテーブルBに記憶されたデータサイズ(ここでは256バイト)に達するまで繰り返す。
領域1の読み込みは、上述した領域0の読み込み処理と同様である。すなわち、読出制御回路124はアドレス「100h」の画像データを読み出し、その実アドレス(8000CC00h)を求め、アドレス「100h」以降の画像データについても同様の処理を、読み出した画像データのデータサイズがテーブルBに記憶されたデータサイズ(ここでは256バイト)に達するまで繰り返す。
このような処理を行い、読出制御回路124がテーブルBに記憶されたデータサイズ分の画像データを読み込んだら、ブロック1の画像データがすべて読み出された状態となるから、上述のステップSb6における判断が今度は肯定的になる。すると、続いて読出制御回路124は、バス制御回路13に画像データを出力する旨の通知を行い、ブロック1の画像データをバス制御回路13に出力する(ステップSb7)。このとき、ブロック1の次のブロックに当たるブロック2の画像データの一部が既に読み込まれているが、この画像データは読出制御回路124に一時的に記憶され、上述のブロック1の場合と同様にブロック全体の画像データが読み込まれてからバス制御回路13に出力される。そして、読出制御回路124は、以上のような処理を画像データの全体を転送し終わるまで、つまりEND信号を受信するまで繰り返す(ステップSb8)。
このようにして読出制御回路124から出力された画像データに対し、バス制御回路13は次のような処理を行う。
バス制御回路13は上述の画像データの出力通知を受信すると、画像データの入力に備え、画像データを受信する。そして、画像データを入力されたバス制御回路13は、バス3のアクセス権を獲得し、メモリ制御部4を介して画像データをメモリ5へと転送する。バス制御回路13も同様に、以上のような処理を画像データの全体を転送し終わるまで続ける。
バス制御回路13は上述の画像データの出力通知を受信すると、画像データの入力に備え、画像データを受信する。そして、画像データを入力されたバス制御回路13は、バス3のアクセス権を獲得し、メモリ制御部4を介して画像データをメモリ5へと転送する。バス制御回路13も同様に、以上のような処理を画像データの全体を転送し終わるまで続ける。
以上のような転送を連続したブロックに対して順次行っていくことで、データ転送制御装置1は、転送先アドレスのバウンダリの不一致による転送回数の増加を防ぎ、また、読み出しと書き込みを並列に行うことによって、転送速度を向上させることが可能となる。また、内部RAM122にメモリ5の実アドレスに対応したアドレスで画像データを書き込むことにより、アドレスの復元を行わずにデータ転送を行うことが可能となる。
さらに、バッファリング時におけるアドレスとメモリ5の実アドレスが一致することから、例えばデータ転送制御装置1が外部からのデータを読み込み、データの一部を書き換えて戻すといったように、キャッシュとして機能させることも可能となる。
さらに、バッファリング時におけるアドレスとメモリ5の実アドレスが一致することから、例えばデータ転送制御装置1が外部からのデータを読み込み、データの一部を書き換えて戻すといったように、キャッシュとして機能させることも可能となる。
(3)変形例
なお、本発明は上述の実施形態に限定されず、以下に示されるような種々の変形が可能である。
なお、本発明は上述の実施形態に限定されず、以下に示されるような種々の変形が可能である。
本実施形態においては、内部RAM122はデュアルポートRAMであるとした。しかし、内部RAM122は必ずしもデュアルポートRAMである必要はなく、例えば単独のポートしか持たないRAMを用いることも可能である。ただしこの場合、RAMの前段にRAMへのデータ書き込みとデータ読み出しを切り替えるためのスイッチング回路を必要とする。
また、本実施形態においては、メモリ5のバウンダリは256バイトであるとしたが、もちろん他のバウンダリのメモリを用いることも可能である。この場合は、メモリのバウンダリに合わせて、内部RAM122のバウンダリも適宜変更すればよい。
また、本実施形態においては、内部RAM122の容量を、メモリ5のバウンダリの2倍である512バイトとした。しかし、内部RAM122の容量は、メモリ5のバウンダリの2倍に限らずとも、3倍以上の任意の整数倍の容量を持たせ、3以上の複数の領域を持たせることも可能である。このような内部RAMを用いると、例えば書込制御回路121の書き込み速度が読出制御回路124の読み出し速度を上回るような場合に、書込制御回路121が書き込み可能な領域が内部RAM122になく、書き込みを待機する状態を回避することが可能となる。この場合は、管理テーブル123のについても、内部RAMの領域に合わせたテーブルの構成とすればよい。
100…コンピュータシステム、1…データ転送装置、2…I/O制御部、3…バス、4…メモリ制御部、5…メモリ、11…アドレス変換回路、12…バッファリング機構、13…バス制御回路、121…書き込み制御回路、122…内部RAM、123…管理テーブル、124…読み出し制御回路。
Claims (2)
- バスを介して接続されたメモリにデータを転送するデータ転送制御装置において、
転送データに予め割り当てられているアドレスを前記メモリにおいて定義されている実アドレスに変換するアドレス変換手段と、
前記メモリにおけるバウンダリと同じデータ容量毎に区切られた複数の記憶領域であって、前記実アドレスの少なくとも一部がそれぞれの記憶領域において用いられるアドレスとして指定されている記憶領域を有する記憶手段と、
前記実アドレスの少なくとも一部によりアドレス指定される複数の記憶領域のうち転送データが記憶されていない記憶領域に対して、前記アドレス変換手段によって変換された前記実アドレスの少なくとも一部のアドレスを用いて前記転送データを順次記憶させる書込手段と、
前記複数の記憶領域のいずれかの記憶領域において記憶すべき量の転送データが記憶されると、該転送データを該記憶領域から順次読み出し、読み出した転送データを該データに対応する実アドレスと共に前記バスを介して前記メモリに転送する読出・転送手段と
を備えるデータ転送制御装置。 - 前記記憶領域に定義されたアドレスは前記実アドレスの一部を用いて定義されており、
前記記憶領域に記憶された該転送データの先頭に当たるデータに対応する実アドレスである先頭アドレスと、該転送データのデータサイズとが対応づけて記述された管理テーブルを備え、
前記読出・転送手段は読み出した転送データに対応する実アドレスを、前記管理テーブルに記述されている前記先頭アドレスと前記データサイズとに基づいて求め、求めた実アドレスを前記転送データと共に前記バスを介して前記メモリに転送する
請求項1記載のデータ転送制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003355119A JP2005122376A (ja) | 2003-10-15 | 2003-10-15 | データ転送制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003355119A JP2005122376A (ja) | 2003-10-15 | 2003-10-15 | データ転送制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005122376A true JP2005122376A (ja) | 2005-05-12 |
Family
ID=34612824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003355119A Pending JP2005122376A (ja) | 2003-10-15 | 2003-10-15 | データ転送制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005122376A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016134005A (ja) * | 2015-01-20 | 2016-07-25 | オリンパス株式会社 | 画像処理装置 |
-
2003
- 2003-10-15 JP JP2003355119A patent/JP2005122376A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016134005A (ja) * | 2015-01-20 | 2016-07-25 | オリンパス株式会社 | 画像処理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2134447C1 (ru) | Устройство пересылки данных и видеоигровое устройство, в котором оно используется | |
WO2007023975A1 (ja) | マルチプロセッサ、ダイレクトメモリアクセスコントローラ、及びシリアルデータ送受信装置 | |
US6684267B2 (en) | Direct memory access controller, and direct memory access control method | |
JPH0559475B2 (ja) | ||
JP2005122376A (ja) | データ転送制御装置 | |
JP2502753B2 (ja) | 画像出力装置 | |
JPS58151262A (ja) | フオントメモリ読出し方式 | |
US6047335A (en) | Video display device applied for a graphics accelerator | |
JP2008059452A (ja) | 画像処理装置、画像処理方法 | |
JP5125205B2 (ja) | データ信号処理装置、画像処理装置、画像出力装置、および、データ信号処理方法 | |
JP4835872B2 (ja) | 画像処理装置 | |
JPH04195355A (ja) | ダイレクトメモリアクセス装置 | |
JPS6249570A (ja) | 画像処理装置 | |
JP2006062132A (ja) | 画像データ変換回路 | |
JP2850371B2 (ja) | 画像出力装置 | |
JP2002117397A (ja) | カラーデータの画像メモリへのアクセス方法 | |
JP2005250996A (ja) | 画像処理装置 | |
JPH04278652A (ja) | 図形描画装置及びそのメモリアクセス方式 | |
JPH06208539A (ja) | 高速データ転送方式 | |
JP2008003930A (ja) | 通信制御装置及びデータ転送制御装置 | |
JPS60114926A (ja) | 二次元座標データの変換装置 | |
JPH11184797A (ja) | Dma制御装置及びその制御方法並びにその制御プログラムを記録した記録媒体 | |
TW200805069A (en) | Memory controller | |
JPS61279888A (ja) | 文字発生装置 | |
JPH04329482A (ja) | 画像回転処理方法およびその処理装置 |