WO2004057481A1 - Dma制御装置、dma制御方法、dma制御プログラム - Google Patents

Dma制御装置、dma制御方法、dma制御プログラム Download PDF

Info

Publication number
WO2004057481A1
WO2004057481A1 PCT/JP2002/013384 JP0213384W WO2004057481A1 WO 2004057481 A1 WO2004057481 A1 WO 2004057481A1 JP 0213384 W JP0213384 W JP 0213384W WO 2004057481 A1 WO2004057481 A1 WO 2004057481A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
transfer
boundary
source
burst
Prior art date
Application number
PCT/JP2002/013384
Other languages
English (en)
French (fr)
Inventor
Masato Inogai
Original Assignee
Fujitsu Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Limited filed Critical Fujitsu Limited
Priority to PCT/JP2002/013384 priority Critical patent/WO2004057481A1/ja
Priority to JP2004562007A priority patent/JPWO2004057481A1/ja
Publication of WO2004057481A1 publication Critical patent/WO2004057481A1/ja
Priority to US11/024,761 priority patent/US7330914B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

 バスを介してDMA転送の転送元と転送先にアクセスし、外部のイニシエータの指示に従って転送元における複数のデータセグメントをチェインし、転送先へバースト転送するDMA制御装置であって、バス幅単位で区切った余りのデータでバス幅未満のデータである境界データが発生する場合に、DMA制御装置内の境界データバッファに境界データを格納し、次のDMAコマンドにより転送元から読み込むデータと先に格納しておいた境界データとをマージして転送先へバースト転送する。

Description

明 細 書
DMA制御装置、 DMA制御方法、 DMA制御プログラム 技術分野
本発明は、 メモリ同士のデータ転送や I /Oとメモリ間でのデータ転送を、 C P Uを経由せずに直接行う DMA (Direct Memory Access) 転送において、 制 御を行う DMA制御装置、 DMA制御方法、 DMA制御プログラムに関するもの である。 背景技術
従来、 C P Uを経由せずにメモリと他のデバイスの間等で直接データを転送す る方法として、 DMA転送が知られている。 一般的に DMA転送は、 パースト転 送が可能なことや C P Uにかかる負荷が分散されることなどから、 C P Uを経由 する P I O (Programmed I/O) 転送に比べて、 大量のデータ転送時に有利であ る。 また、 例えば、 複数のデータセグメントを連結してひとつのデータパケット を作るイーサネットのような形態に対応するために、 DMA転送を制御する DM A C (Direct Memory Access Controller: DMA制御装置) には、 転送元にお ける 1つのデータセグメントを転送する単発モードの他に、 転送元における複数 のデータセグメントを連続して転送するチエインモードが実装されているのが一 般的である。
このチエインモードにおいて、 転送元のデータセグメントの配置として任意の 了ドレスを許すことが可能な場合、 ユーザプロダラミングの柔軟性という意味で 効果的である。
し力 しながら、 2バイト以上の幅を持つパスに接続される DMA Cにおいて、 バイト単位の任意のァドレス境界で分割された複数のデータセグメントをチヱイ ンモードで転送する場合には、 バースト転送の境界がパス幅と一致しない、 ミス アラインメントが生じる。 例えば、 I /Oがイーサネットのネットワークァダプ タである場合を想定する。 メモリから I /Oへ転送するパケットは、 ヘッダ部と ペイロード部などの複数のパーツで構成されている。 一般的にこれらのパーツは 各々個別のメモリのワーク領域に準備されていることが多レ、が、 個別に格納され ているパーツを組みなおして iZo力 s認識できるバケツトの形にする必要がある
。 このひとつの手段として DMA転送が利用される場合があるが、 個別のパーツ が任意のァドレスに構築されているとバス幅にァラインしていないァドレスにあ るデータに関してはバースト転送することができない。
従って、 連続してパスを占有するバースト転送と、 バス幅未満のデータを転送 するパーシャル転送とを組み合わせる必要がある。 この場合、 転送の境界でバス のァービトレーシヨンが入るため、 全てをバースト転送した場合に比べてバス使 用効率が低下するという問題が生じる。
このようなミスアラインメントの問題に対応する DM A制御方式として、 例え ば、 特開平 5— 67035ゃ特開平 9一 146877ゃ特開 2000— 1324 97がある。 特開平 5— 67035で示される方式は、 CPU制御によりァライ ンメント調整を行うため CPUの負荷分散としては好ましくない。 また、 特開平 9- 146877ゃ特開 2000— 132497で示される方式は、 チェインモ 一ド時の転送に言及しておらず、 チェインで使用する場合のミスァライメント時 におけるバスオーバーへッドの低下は免れない。
また、 データの転送先である転送先メモリがキャッシュ制御されている場合に 、 受信したバケツト毎に任意のァドレス境界でパースト転送を行うと無駄なキヤ ッシュ制御オペレーションが発生する場合がある。
本発明は、 このような問題を解決するためになされたものであり、 バイト単位 の任意のァドレス境界で分割されたデータセグメントをチエインモードで DMA 転送する際に、 バス使用効率を低下させない DMA制御装置、 DMA制御方法、 DM A制御プログラムを提供することを目的とする。 発明の開示
本発明は、 バスを介して DMA転送の転送元と転送先にアクセスし、 外部のィ ェシエータの指示に従って転送元における複数のデータセグメントをチェインし
、 転送先へバースト転送する DM A制御装置であって、 転送元のデータセグメン トを第 1のデータとして読み込むバス読み込み部と、 データをバス幅単位で格納 するパースト転送用バッファと、 バス幅単位で区切った余りのデータでパス幅未 満のデータである境界データが発生する場合に、 該境界データと次のデータセグ メントの転送先ァドレスオフセットとを格納する境界データバッファと、 前記ィ ニシエータの指示から得られる転送元ァドレスオフセットと前記境界データバッ ファが格納する転送先ァドレスオフセットとに基づいて前記第 1のデータのシフ ト量を算出するアキュムレータと、 前記シフト量に応じて前記第 1のデータのシ フトを行い、 前のデータセグメントで発生した境界データとシフトした前記第 1 のデータとをマージして第 2のデータを生成し、 前記第 2のデータに境界データ が発生し且つ次のデータセグメントをチェインする場合に、 該境界データと次の データセグメントの転送先ァドレスオフセットとを前記境界データバッファへ出 力するとともに、 前記第 2のデータのうち前記境界データ以前のデータを前記バ ースト転送用バッファへ出力するデータシフト部と、 前記バースト転送用バッフ ァに格納されたデ一タを転送先へバースト転送するバス書き込み部とを備えてな るものである。
なお、 前記データシフト部は、 前記第 2のデータに境界データが発生し且つ次 のデータセグメントをチェインする前記場合以外においては、 前記第 2のデータ を前記バースト転送用バッファへ出力する。
このような構成によれば、 パイト単位の任意のアドレス境界で分割されたデー タセグメントをチェインモードで DMA転送する際に、 できるだけバースト転送 を行うようにデータを組み立てなおすことにより、 バスの使用効率を上げること ができる。 なお、 実施の形態 1におけるパス読み込み部とパス書き込み部は、 ノ スサイクル制御部 3 1のことである。
また、 本発明は、 異なる幅を持つ複数のバスに接続された DMA転送の転送元 と転送先にアクセスし、 外部のイニシエータに従って転送元における複数のデー タセグメントをチェインし、 転送先へパースト転送する DMA制御装置であって 、 転送元のデータセグメントを第 1のデータとして読み込むバス読み込み部と、 データを転送先バス幅単位で格納するバースト転送用バッファと、 転送元パス 幅単位で区切った余りのデータで転送元バス幅未満のデータである境界データが 発生する場合に、 該境界データと次のデータセグメントの転送先ァドレスオフセ ットとを格納する境界データノ ッファと、 前記ィニシエータの指示から得られる 転送元ァドレスオフセットと前記境界データバッファが格納する転送先ァドレス オフセットとに基づいて前記第 1のデータのシフト量を算出するアキュムレータ と、 転送元パス幅単位のデータを転送先バス幅単位のデータに並べ替えて前記バ ースト転送用バッファへ出力するデータ再構成部と、 前記シフト量に応じて前記 第 1のデータのシフトを行い、 前のデータセグメントで発生した境界データとシ フトした前記第 1のデータとをマージして第 2のデータを生成し、 前記第 2のデ ータに境界データが発生し且つ次のデータセグメントをチェインする場合に、 該 境界データと次のデータセグメントの転送先ァドレスオフセットとを前記境界デ ータバッファへ出力するとともに、 前記第 2のデータのうち前記境界データ以前 のデータを前記データ再構成部へ出力するデータシフト部と、 前記パースト転送 用バッファに格納されたデ一タを転送先へバースト転送するバス書き込み部とを 備えてなるものである。
なお、 前記データシフト部は、 前記第 2のデータに境界データが発生し且つ次 のデータセグメントをチェインする前記場合以外においては、 前記第 2のデータ を前記データ再構成部へ出力する。
このような構成によれば、 バイト単位の任意のアドレス境界で分割されたデー タセグメントを、 転送元とは異なるパス幅を持つ転送先へチェインモードで DM A転送する際に、 できるだけバースト転送を行うようにデータを組み立てなおす ことにより、 バスの使用効率を上げることができる。 なお、 実施の形態 2におけ るパス読み込み部とパス書き込み部は、 バスサイクル制御部 1 3 1 , 1 4 1のこ とである。
また、 本発明に係る DMA制御装置において、 前記データ再構成部は、 転送先 バス幅が転送元バス幅の整数倍である場合に、 データシフト部の出力するデータ を結合して前記バースト転送用パッファへ出力し、 転送元バス幅が転送先パス幅 の整数倍である場合に、 データシフト部の出力するデータを分割して前記パース ト転送用バッファへ出力することを特徴とするものである。
このような構成によれば、 転送先バス幅が転送元バス幅の整数倍、 または転送 元バス幅が転送先パス幅の整数倍である場合に、 できるだけバースト転送を行う ようにデータを組み立てなおすことにより、 バスの使用効率を上げることができ る。 '
また、 本発明に係る DMA制御装置において、 転送先がキャッシュ制御されて いる場合、 前記アキュムレータは、 さらにキャッシュラインの境界に合わせたバ 一スト転送サイズを算出し、 前記バス書き込み部は、 前記バース ト転送サイズに 従って前記パースト転送用バッファに格納されたデータを転送先へバースト転送 することを特 とするものである。
このような構成によれば、 転送先メモリがキヤッシュ制御されている場合に、 転送先メモリのキャッシュライン境界に合わせてバースト転送を行うことにより 、 DMA C外部のキヤッシュ制御部の負荷を低減することができる。
また、 本発明に係る DMA制御装置において、 前記外部のイニシエータが複数 ある場合、 前記境界データバッファは、 境界データと次のデータセグメントの転 送先ァドレスオフセットの組を前記イニシエータの数と同数だけ格納し、 前記ァ キュムレータは、 指示したイニシエータ毎の前記転送元アドレスオフセットと転 送先アドレスオフセットに基づいてデータセグメントのシフト量を算出すること を特徴とするものである。
このような構成によれば、 複数のイニシエータによる DMA転送の指示に対応 することができる。
また、 本 明は、 パスを介して DMA転送の転送元と転送先にアクセスし、 外 部のイニシエータの指示に従って転送元における複数のデータセグメントをチェ インし、 転送先へバースト転送する DMA制御方法であって、 転送元のデータセ グメントを第 1のデータとして読み込むステップと、 前記イニシエータの指示か ら得られる転送元ァドレスオフセットと、 前のデータセグメントをバス幅単位で 区切つた余りのデータでパス Ψΐ未満のデータである境界データが発生した場合の 転送先ァドレスオフセットとに基づいて前記第 1のデータのシフト量を算出する ステップと、 前記シフト量に応じて前記第 1のデータのシフトを行い、 前のデー タセグメントで発生した境界データとシフトした前記第 1のデータとをマージし て第 2のデータを生成し、 前記第 2のデータに境界データが発生し且つ次のデー タセグメントをチエインする場合に、 該境界データと次のデータセグメントの転 送先ァドレスオフセットとを格納するとともに、 前記第 2のデータのうち前記境 界データ以前のデータをバースト転送用データとして格納するステップと、 前記 パースト転送用データを転送先へバースト転送するステップとを備えてなるもの である。
なお、 前記第 2のデータに境界データが発生し且つ次のデータセグメントをチ ェインする前記場合以外においては、 前記第 2データセグメントをバースト転送 用データとして格納するステップを備える。
このような構成によれば、 パイト単位の任意のアドレス境界で分割されたデー タセグメントをチヱインモードで DMA転送する際に、 できるだけバースト転送 を行うようにデータを組み立てなおすことにより、 バスの使用効率を上げること ができる。
また、 本発明は、 異なる幅を持つ複数のバスに接続された DMA転送の転送元 と転送先にアクセスし、 外部のイニシエータに従って転送元における複数のデー タセグメントをチェインし、 転送先へバースト転送する DMA制御方法であって
、 転送元のデータセグメントを第 1のデータとして読み込むステップと、 前記ィ ユシェータの指示から得られる転送元アドレスオフセットと、 前のデータセグメ ントを転送元バス幅単位で区切った余りのデータで転送元バス幅未満のデータで ある境界データが発生した場合の転送先ァドレスオフセットとに基づいて前記第
1のデータのシフト量を算出するステップと、 前記シフト量に応じて前記第 1の データのシフトを行い、 前のデータセグメントで発生した境界データとシフトし た前記第 1のデータとをマージして第 2のデータを生成し、 前記第 2のデータに 境界データが発生し且つ次のデータセグメントをチエインする場合に、 該境界デ ータと次のデータセグメントの転送先ァドレスオフセットとを格納するとともに 、 前記第 2のデータのうち前記境界データ以前のデータを転送先バス幅単位のデ —タに並べ替えてバースト転送用データとして格納するステップと、 前記パース ト転送用データを転送先へバースト転送するステップとを備えてなるものである 。 なお、 前記第 2のデータに境界データが発生し且つ次のデータセグメントをチ エインする前記場合以外においては、 前記第 2のデータを転送先パス幅単位のデ ータに並べ替えてパースト転送用データとして格納するステップを備える。 このような構成によれば、 パイト単位の任意のァドレス境界で分割されたデー タセグメントを、 転送元とは異なるパス幅を持つ転送先へチエインモードで DM A転送する際に、 できるだけパースト転送を行うようにデータを組み立てなおす ことにより、 バスの使用効率を上げることができる。
また、 本発明は、 パスを介して DMA転送の転送元と転送先にアクセスし、 外 部のイニシエータの指示に従って転送元における複数のデータセグメントをチェ インし、 転送先へバース ト転送する動作をコンピュータに実行させるために、 コ ンピュータにより読取可能な媒体に記憶された D M A制御プログラムであって、 転送元のデータセグメントを第 1のデータとして読み込むステップと、 前記ィニ シエータの^ ^から得られる転送元ァドレスオフセットと、 前のデータセグメン トをバス幅単位で区切った余りのデータでバス幅未満のデータである境界データ が発生した場合の転送先ァドレスオフセットとに基づいて前記第 1のデータのシ フト量を算出するステップと、 前記シフト量に応じて前記第 1のデータのシフト を行い、 前のデータセグメントで発生した境界データとシフトした前記第 1のデ 一タとをマージして第 2のデータを生成し、 前記第 2のデータに境界データが発 生し且つ次のデータセグメントをチヱインする場合に、 該境界データと次のデー タセグメントの転送先アドレスオフセットとを格納するとともに、 前記第 2のデ ータのうち前記境界データ以前のデータをバースト転送用データとして格納する ステップと、 前記パースト転送用データを転送先へバースト転送するステップと を備えてなるものである。
なお、 前記第 2のデータに境界データが発生し且つ次のデータセグメントをチ ェインする前記場合以外においては、 前記第 2データセグメントをパースト転送 用データとして格納するステップを備える。
このような構成によれば、 バイト単位の任意のアドレス境界で分割されたデー タセグメントをチェインモードで DMA転送する際に、 できるだけバースト転送 を行うようにデータを組み立てなおすことにより、 バスの使用効率を上げること ができる。
また、 本発明は、 異なる幅を持つ複数のバスに接続された DMA転送の転送元 と転送先にァクセスし、 外部のィニシェークに従つて転送元における複数のデー タセグメントをチェインし、 転送先へパースト転送する動作をコンピュータに実 行させるために、 コンピュータにより読取可能な媒体に記憶された DMA制御プ ログラムであって、 転送元のデータセグメントを第 1のデータとして読み込むス テツプと、 前記イニシエータの指示から得られる転送元アドレスオフセットと、 前のデータセグメントを転送元バス幅単位で区切った余りのデータで転送元パス 幅未満のデータである境界データが発生した場合の転送先ァドレスオフセットと に基づいて前記第 1のデータのシフト量を算出するステップと、 前記シフト量に 応じて前記第 1のデータのシフトを行い、 前のデータセグメントで発生した境界 データとシフトした前記第 1のデータとをマージして第 2のデータを生成し、 前 記第 2のデータに境界データが発生し且つ次のデータセグメントをチェインする 場合に、 該境界データと次のデータセグメントの転送先ァドレスオフセットとを 格納するとともに、 前記第 2のデータのうち前記境界データ以前のデータを転送 先バス幅単位のデータに並べ替えてバースト転送用データとして格納するステツ プと、 前記パースト転送用データを転送先へパースト転送するステップとを備え てなるものである。
なお、 前記第 2のデータに境界データが発生し且つ次のデータセグメントをチ エインする前記場合以外においては、 前記第 2のデータを転送先バス幅単位のデ ータに並べ替えてパースト転送用データとして格納するステップを備える。 このような構成によれば、 バイト単位の任意のアドレス境界で分割されたデー タセグメントを、 転送元とは異なるパス幅を持つ転送先へチエインモードで DM A転送する際に、 できるだけバースト転送を行うようにデータを組み立てなおす ことにより、 パスの使用効率を上げることができる。 図面の簡単な説明
第 1図は、 実施の形態 1に係る DMA Cの構成の一例を示すプロック図である 第 2図は、 実施の形態 1に係る DMA Cの動作の一例を示すフローチャートで ある。 第 3図は、 パス幅が 2パイトの場合におけるデータシフト部と境界データバッ ファの構成の一例を示すプロック図である。
第 4図は、 転送元のバス幅が 2バイト、 転送先のパス幅が 2バイトである場合 のデータシフト部の入出力データの一例を表す図である。
第 5図は、 3回の DMAコマンドにより転送元から読み込んだデータをバース ト転送用パッファへ格納する動作の一例を示す図である。
第 6図は、 キャッシュラインの境界に合わせたバースト転送サイズでバースト 転送する動作の一例を示す図である。
第 7図は、 実施の形態 2に係る DMA Cの構成の一例を示すプロック図である 第 8図は、 転送元のバス幅が 2バイト、 転送先のバス幅が 4バイトである場合 のデータシフト部の入出力データの一例を表す図である。
第 9図は、 転送元のバス幅が 2パイト、 転送先のパス幅が 4バイトである場合 のデータシフト部の入出力データの一例を表す図である。 発明を実施するための最良の形態
以下、 本発明の実施の形態について図面を参照して詳細に説明する。
実施の形態 1 .
本実施の形態では、 DMA転送対象の転送元バスと転送先パスが共通である場 合の DMA Cの動作について説明する。 ここではチェインモードにより DMA転 送を行うものとする。 また、 本発明では、 アドレス データ/制御信号の使用方 法などのバス形態を限定しない。'第 1図は、 実施の形態 1に係る DMA Cの構成 の一例を示すブロック図である。 DMA C 1と。?11 4と 1 /0 5とメモリ 6は 、 2バイト以上のバス幅を持つバス 7を介して接続されている。 ここで、 C P U 4は、 DMA C 1のイニシエータであり、 I /O 5とメモリ 6は、 DMA転送に おける転送元または転送先となり得る DMA転送対象である。
第 1図に示すように、 本実施の形態に係る DMA C 1は、 DMAコア 2とデー タ転送部 3から構成される。 DMAコア 2は、 コマンドデコーダ 2 1と、 メイン コントローラ 2 2と、 アキュムレータ 2 3から構成される。 データ転送部 3は、 バスサイクル制御部 3 1と、 データシフト部 3 2と、 バースト転送用バッファ 3 3と、 境界データバッファ 3 4から構成ざれる。
以下、 本実施の形態に係る DMA C 1の動作について説明する。 第 2図は、 実 施の形態 1に係る DMA Cの動作の一例を示すフローチャートである。 まず、 C P U 4が DMAコマンドを DMA C 1へ通知することにより、 このフローは開合 する。 転送元における 1つのデータセグメントを転送するために 1回の DMAコ マンドが DMA Cへ通知される。 さらに、 チェインモードにおいては複数の DM Aコマンドが DMA Cへ通知される。 DMAコマンドは、 転送元アドレスと転送 先アドレスと転送サイズとチヱインフラグからなる。 チヱインフラグとは、 複数 の DMAコマンドで示されるデータセグメントをチェインしてデータ転送を行う 力否かを示すフラグであり、 チヱインフラグが有りであれば前のチヱィンモード で転送されたデータとチエインすることを示し、 チェインフラグが無しであれば 前の転送とは独立にデータを転送することを示す。
また、 チヱインフラグとは、 データセグメントかチェインの最後尾であるか否 かを示すフラグでもある。 ここで、 一般的に DMAコマンドの通知方法は、 C P Uが P I Oにより共通バス経由で DMA Cへ DMA起動コマンドを通知する方法 と、 C P Uが予め一連の DMAコマンドを共通メモリ領域に準備しておき、 DM A Cへ起動トリガのみを通知する方法等があるが、 ここではいずれの方法を用い ても良い。
C P U 4から送信された DMAコマンドは、 パス 7を介してバスサイクル制御 部 3 1で受信され、 コマンドデコーダ 2 1へ入力される。 ここで、 バスサイクル 制御部 3 1は、 パスにおけるプロトコルに沿つた送受信を行う。
次に、 コマンドデコーダ 2 1は、 DMAコマンドを解釈し、 その結果得られた DMA転送に関する指示をメインコントローラ 2 2へ出力する。 メインコント口 ーラ 2 2は、 アキュムレータ 2 3に転送元アドレスオフセットと転送先アドレス オフセットを与える。 アキュムレータ 2 3は、 転送元アドレスオフセットと転送 先アドレスオフセットに基づいて、 データシフト部 3 2に与えるシフト量を算出 し、 メインコントローラ 2 2へ出力する (S 1 ) 。
ここで、 チェインフラグが有りであれば、 メインコントローラ 2 2は境界デー タバッファに格納されたァドレスオフセットを読み込み、 転送先ァドレスオフセ ットとしてアキュムレータ 23に与える。 境界データバッファ 34は、 前のデー タセグメントにおいてパス幅単位で区切った余りのデータでバス幅未満のデータ である境界データと、 その境界データによって生じる転送先アドレスオフセット を格納している。
次に、 メインコントローラ 22は、 バスサイクル制御部 31に対して、 転送元 からのデータの読み込みの指示を行う。 バスサイクル制御部 31は、 転送元から データを読み込み、 データシフト部 32へ出力する (S 2) 。
次に、 メインコントローラ 22は、 チェインモードでありかつ境界データバッ ファ 34に境界データがある力否かの判断を行う (S 3) 。
チェインモードでありかつ境界データバッファに境界データがある場合 (S 3 , Y) 、 データシフト部 32は、 メインコントローラ 22から与えられるシフト 量に応じて、 転送元から読み込んだデータをシフトした後、 境界データとシフト したデータをマージし (S4) 、 バス幅単位でバースト転送用バッファ 33へ出 力する (S 6) 。 パースト転送用バッファ 33は、 入力されたデータをバス幅単 位で格納する。
一方、 前述の場合以外であれば (S 3, N) 、 データシフト部 32はメインコ ントローラ 22から与えられるシフト量に応じて、 転送元から読み込んだデータ をシフトし (S 5) 、 シフトしたデータをパス幅単位でパースト転送用バッファ 33へ出力する (S 6) 。 バースト転送用バッファ 33は、 入力されたデータを バス幅単位で格納する。
次に、 メインコントローラ 22は、 データをパス幅単位で格納した時に、 境界 データが残ったか否かの判断を行う (S 7) 。 境界データが残らなければ (S 7 , N) 、 処理 S I 1へ移行する。 一方、 境界データが残った場合 (S 7, Y) 、 メインコントローラ 22は、 チヱインモードでありかつチヱインの最後尾ではな いか否かの判断を行う (S 8) 。
チェインモードでありかつチェインの最後尾ではない場合 (S 8, Y) 、 デー タシフト部 32は、 境界データと次のデータセグメントの転送先ァドレスオフセ ットを境界データバッファ 34へ格納し (S 9) 、 処理 S 11へ移行する。 —方、 前述の場合以外 (チヱインフラグが無し、 又はチェインモードの最後尾 の場合) であれば (S 8 , N) 、 データシフト部 3 2は、 境界データをパースト 転送用バッファ 3 3へ格納し (S 1 0 ) 、 処理 S 1 1へ移行する。
次に、 メインコントローラ 2 2は、 パースト転送用バッファ 3 3に格納された データのバースト転送が可能力否かの判断を行う (S l l ) 。 ここで転送先バス へのバースト転送を開始する力否かは、 転送先パスの使用状況に応じて決定され 、 もしパスの使用権を獲得できれば転送を開始し、 もしビジー状態であれば、 転 送先パスへのバースト転送の開始を遅延させることも可能であり、 遅延させてい る間に次の DMAコマンドによって転送するデータが追カ卩される場合もありえる 。 バースト転送が不可能であれば (S l l, N) 、 このフローは終了する。 パー スト転送が可能であれば (S l l , Y) 、 メインコントローラ 2 2はパスサイク ル制御部 3 1に対して、 転送先へのデータの書き込みの指示を行う。 バスサイク ル制御部 3 1は、 バースト転送用バッファ 3 3に格納されたデータを、 パス 7を 介して転送先へバースト転送することにより転送先へデータを書き込み (S 1 2 ) 、 このフローは終了する。 以上のフローは、 チェインが継続する限り繰り返し 実行される。
次に、 データシフト部 3 2と境界データバッファ 3 4の構成について説明する 。 第 3図は、 パス幅が 2バイ トの場合におけるデータシフト部と境界データバッ ファの構成の一例を示すブロック図である。 第 3図に示すように、 データシフト 部 3 2は、 データ選択部 3 2 1と、 シフトバッファ 3 2 2と、 ゲート 3 2 3から 構成される。 境界データバッファ 3 4とシフトバッファ 3 2 2等のサイズはバス 幅で決定される。 この例では、 境界データバッファ 3 4のサイズを 1バイトとし 、 シフトバッファ 3 2 2のサイズを 3バイトとする。 第 3図において、 i 0、 i 1は入力データの各パイトを表し、 o 0、 o 1は出力データの各バイトを表す。 ここで、 入力データは転送元から読み込んだデータがパス幅単位で入力されるも のであり、 出力データはバースト転送用バッファ 3 3へ格納されるデータである o また、 f 0、 f 1、 f 2はシフトバッファ 3 2 2の各パイトを表し、 b 0は境 界データバッファ 3 4の各バイトを表す。 データは全てパイ ト単位である。 次に、 データシフト部 3 2と境界データバッファ 3 4の動作について具体例を 用いて説明する。 第 4図は、 転送元のパス幅が 2バイト、 転送先のバス幅が 2バ ィトである場合のデータシフト部の入出力データの一例を表す図である。 第 4図 の表において、 列の上側に記した数値は、 対応する列に記されたケースにおける 転送元アドレスオフセットを表し、 行の左側に記した数値は、 対応する行に記さ れたケースにおける転送先ァドレスオフセットを表す。 第 4図の表における 1つ のセルは、 列に対応する転送元ァドレスオフセットと行に対応する転送先ァドレ スオフセットを持ったケースを表し、 セルの内容はそのケースにおける入力デー タ i 0, i 1と出力データ o 0 , o 1を表す。 また、 Xは、 チェインモードにお ける前の DMAコマンドにより転送元から読み込まれたデータであり、 a , b , c , dは、 チェインモードにおける現在の DMAコマンドにより転送元から読み 込まれるデータであり、 チエインが継続する場合、 zはチエインモードにおける 次の DMAコマンドで転送元から読み込まれる次のデータであり、 チエインが継 続しない場合、 zは存在しない。 2パイトの入力データ i 0, i 1は、 データシ フト部 3 2でシフトされ、 必要に応じて境界データとマージされた後、 2バイト の出力データ o 0 , o 1としてバースト転送用バッファ 3 3へ出力される。 まず、 転送元から読み込むデータセグメントの転送元ァドレスオフセットが 0 X 0 , 転送先アドレスオフセットが 0 X 0のケースについて説明する。 まず、 デ ータ選択部 3 2 1は、 最初の入力データ a ( i 0 ) をシフトバッファ f 0へ出力 し、 最初の入力データ b ( i 1 ) をシフトバッファ f 1へ出力する。 シフトパッ ファ 3 2 2は、 f 0に入力されたデータ aをゲート 3 2 3へ出力するとともに境 界データバッファ b 0へ出力し、 f 1に入力されたデータ bをゲート 3 2 3へ出 力する。 ゲートは、 データ aを出力データ o 0、 データ bを出力データ o 1とし てパースト転送用バッファ 3 3へ出力する。
次に、 データ選択部 3 2 1は、 次の入力データ c ( i 0 ) をシフトバッファ f 0へ出力し、 次の入力データ d ( i 1 ) をシフトバッファ f 1へ出力する。 シフ トバッファ 3 2 2は、 f 0に入力されたデータ cをゲート 3 2 3へ出力するとと もに境界データバッファ b 0へ出力し、 f 1に入力されたデータ dをゲート 3 2 3へ出力する。 ゲートは、 データ cを出力データ 0 0、 データ dを出力データ o 1としてパースト転送用バッファ 3 3へ出力する。 次に、 転送元から読み込むデータセグメントの転送元ァドレスオフセットが 0 1 , 転送先アドレスオフセットが 0 X 0のケースについて説明する。 まず、 デ ータ選択部 3 2 1は、 最初の入力データ a ( i 1 ) をシフトバッファ f 2へ出力 する。 シフトバッファ 3 2 2は、 f 2に入力されたデータ aをデータ選択部 3 2 1へ出力する。
次に、 データ選択部 3 2 1は、 データ aをシフトバッファ f 0へ出力し、 次の 入力データ b ( i 0 ) をシフトバッファ f 1へ出力し、 次の入力データ c ( i 1 ) をシフトバッファ f 2へ出力する。 シフトバッファ 3 2 2は、 f 0に入力され たデータ aをゲート 3 2 3へ出力するとともに境界データバッファ b 0へ出力し 、 f 1に入力されたデータ bをゲート 3 2 3へ出力し、 f 2に入力されたデータ cをデータ選択部 3 2 1へ出力する。 ゲート 3 2 3は、 データ aを出力データ o 0、 データ bを出力データ o 1としてバースト転送用バッファ 3 3へ出力する。 すなわち、 データ a , bは、 データシフト部 3 2でメインコントローラ 2 2から 与えられるシフト量に従ってシフトされ、 バースト転送用バッファ 3 3へ出力さ れる。
次に、 データ選択部 3 2 1は、 データ cをシフトバッファ f 0へ出力し、 次の 入力データ d ( i 0 ) をシフトバッファ f 1へ出力する。 シフトバッファ 3 2 2 は、 f 0に入力されたデータ cをゲート 3 2 3へ出力するとともに境界データバ ッファ b 0へ出力し、 f 1に入力されたデータ dをグート 3 2 3へ出力する。 ゲ ―トは、 データ cを出力データ o 0、 データ dを出力データ o 1としてバースト 転送用バッファ 3 3へ出力する。
次に、 転送元から読み込むデータセグメントの転送元アドレスオフセットが 0 0 , 転送先アドレスオフセットが 0 X 1のケースについて説明する。 まず、 デ ータ選択部 3 2 1は、 境界データバッファ b 0が格納しているデータ Xをシフト バッファ f 0へ出力し、 最初の入力データ a ( i 0 ) をシフトバッファ f lへ出 力し、 最初の入力データ b ( i 1 ) をシフトバッファ f 2へ出力する。 ここで、 データ Xは前のデータセグメントで発生した境界データである。 シフトバッファ 3 2 2は、 f 0に入力されたデータ Xをゲート 3 2 3へ出力するとともに境界デ ータバッファ b 0へ出力し、 f 1に入力されたデータ aをゲート 3 2 3へ出力し W
、 f 2に入力されたデータ bをデータ選択部 3 2 1へ出力する。 ゲートは、 デー タ Xを出力データ o 0、 データ aを出力データ o 1としてバースト転送用パッフ ァ 3 3へ出力する。 すなわち、 データ aは、 データシフト部 3 2でメインコント ローラ 2 2から与えられるシフト量に従ってシフトされた後、 境界データ Xとマ ージされ、 パースト転送用バッファ 3 3へ出力される。
次に、 データ選択部 3 2 1は、 データ bをシフトバッファ f 0へ出力し、 次の 入力データ c ( i 0 ) をシフトバッファ f 1へ出力し、 次の入力データ d ( i 1 ) をシフトバッファ f 2へ出力する。 シフトバッファ 3 2 2は、 f 0に入力され たデータ bをゲート 3 2 3へ出力するとともに境界データバッファ b 0へ出力し 、 f 1に入力されたデータ cをゲート 3 2 3へ出力し、 f 2に入力されたデータ dをデータ選択部 3 2 1へ出力する。 ゲート 3 2 3は、 データ bを出力データ o 0、 データ cを出力データ o 1としてバースト転送用バッファ 3 3へ出力する。 次に、 データ選択部 3 2 1は、 データ dをシフトバッファ f 0へ出力する。 シ フトバッファ 3 2 2は、 f 0に入力されたデータ dをゲート 3 2 3へ出力すると ともに境界データバッファ b 0へ出力する。 ここで、 チェインが継続する場合、 ゲート 3 2 3はデータ dを出力せず、 データ dは境界データバッファ b 0で保持 され、 次のデータセグメントで転送元から読み込まれるデータ zにマージされ、 バースト転送用バッファ 3 3へ出力される。 チェインが,継続しない場合、 ゲート 3 2 3はデータ dをバースト転送用バッファ 3 3へ出力する。 次に、 転送元か ら読み込むデータセグメントの転送元ァドレスオフセットが 0 X 1 , 転送先ァド レスオフセットが 0 X 1のケースについて説明する。 まず、 データ選択部 3 2 1 は、 境界データバッファ b 0が保持しているデータ Xをシフトバッファ f 0へ出 力し、 最初の入力データ a ( i 1 ) をシフトバッファ f 1へ出力する。 ここで、 データ Xは前のデータセグメントで発生した境界データである。 シフトバッファ 3 2 2は、 f 0に入力されたデータ Xをゲート 3 2 3へ出力するとともに境界デ ータバッファ b 0へ出力し、 f 1に入力されたデータ aをゲート 3 2 3へ出力す る。 ゲート 3 2 3は、 データ Xを出力データ o 0、 データ aを出力データ o 1と してバースト転送用バッファ 3 3へ出力する。 すなわち、 データ aは、 データシ フト部 3 2で境界データ Xとマージされ、 バースト転送用バッファ 3 3へ出力さ れる。
次に、 データ選択部 3 2 1は、 次の入力データ b ( i 0 ) をシフトバッファ f 0へ出力し、 次の入力データ c ( i 1 ) をシフトバッファ f 1へ出力する。 シフ トバッファ 3 2 2は、 f 0に入力されたデータ bをゲート 3 2 3へ出力するとと もに境界データバッファ b 0へ出力し、 f 1に入力されたデータ cをゲート 3 2 3へ出力する。 ゲート 3 2 3は、 データ bを出力データ o 0、 データ cを出力デ ータ o 1としてバースト転送用バッファ 3 3へ出力する。
次に、 データ選択部 3 2 1は、 データ dをシフトバッファ f 0へ出力する。 シ フトバッファ 3 2 2は、 f 0に入力されたデータ dをゲート 3 2 3へ出力すると ともに境界データバッファ b 0へ出力する。 ここで、 チェインが, II続する場合、 ゲート 3 2 3はデータ dを出力せず、 データ dは境界データバッファ b 0で保持 され、 次のデータセグメントで転送元から読み込まれるデータ zにマージされ、 パースト転送用バッファ 3 3へ出力される。 チヱインが継続しない場合、 ゲート 3 2 3はデータ dをバースト転送用バッファ 3 3へ出力する。 以上のように、 転送元から読み込まれたデータは、 メインコントローラ 2 2から与えられるシフ ト量に従ってシフトされ、 さらに前のデータセグメントで境界データが発生して いればマージされ、 パースト転送用バッファ 3 3へ出力される。
次に、 実際に、 バイト単位の任意アドレス境界で分割されたデータセグメント をチェインし、 連続アドレスのデータパケットを作る動作について説明する。 第 5図は、 転送元から読み込んだデータをバースト転送用バッファへ格納する動作 の一例を示す図である。
第 5図 (a ) は 1回目の DMAコマンドにより読み込まれるデータを含む転送 元データセグメントを示し、 第 5図 (b ) は 2回目の DMAコマンドにより読み 込まれるデータを含む転送元データセグメントを示し、 第 5図 (c ) は 3回目の DMAコマンドにより読み込まれるデータを含む転送元データセグメントを示す 。 第 5図 (a ) 〜 (c ) の図において、 行はワードアドレスを示し、 列は転送元 バス幅を示す。 また、 第 5図 (d ) は 3回の DMAコマンドにより読み込まれた データが格納されたバースト転送用バッファを示す。 第 5図 (d ) の図において 、 行はエントリを示し、 列は転送先パス幅を示す。 ここでは、 転送元と転送先のバス幅を 4バイトとし、 3回の DMAコマンドが 起動されるものとする。 1回目の DMAコマンドは、 チェインフラグ有り、 転送 サイズ 2バイト、 転送元アドレスオフセット 0 X 1、 転送先アドレスオフセット 0 x 0とする。 2回目の DMAコマンドは、 チェインフラグ有り、 転送サイズ 1 2バイト、 転送元ァドレスオフセット 0 X 0、 転送先ァドレスオフセット 0 X 2 とする。 3回目の DMAコマンドは、 チェインフラグ無し、 転送サイズ 6バイト 、 転送元ァドレスオフセット 0 X 2、 転送先ァドレスオフセット 0 X 2とする。 まず、 1回目の DMAコマンドを受け付けた場合について説明する。 まず、 デ ータシフト部 32は、 転送元から 1ワードデータ (a l 0〜a l 3) を読み込み 、 シフト量に従って 1バイト左シフトした 2バイトのデータ (a l l, a 12) を境界データバッファ 34に格納する。 このとき余分な a 10, a 13は廃棄さ れる。
次に、 2回目の DMAコマンドを受け付けた場合について説明する。 まず、 デ ータシフト部 32は、 転送元から 3ワードデータ (b l 0〜b 33) をバースト 読み込む。 先頭ワード (b l O, b 1 1, b 12, b 13) の読み込み時に、 デ 一タシフト部 32は、 シフト量に従って 2バイト右シフトした先頭ワードを 1回 目の DMAコマンドで境界データバッファ 34に格納されたデータ (a l l, a 12) とマージした後、 バースト転送用バッファ 33のエントリ 0 X 0へ格納す る。 先頭ヮードのうちバースト転送用バッファ 33に格納されなかったデータ ( b 12, b 13) は 2パイト右シフトした形でデータシフト部 32に残っている 続いて 2 n dワード (b 20, b 21 , b 22, b 23) の読み込み時に、 デ ータシフト部 32は、 シフト量に従って 2バイト右シフトした 2n dワードを残 つているデータ (b 12, b 13) とマージした後、 パースト転送用バッファ 3 3のェントリ 0 X 4へ格納する。 2n dヮードのうちバースト転送用バッファ 3 3に格納されなかったデータ (b 22, b 23) は 2バイト右シフトした形でデ 一タシフト部 32に残っている。
続いて 3 r dワード (b 30, b 31 , b 32, b 33 ) の読み込み時に、 デ 一タシフト部 32は、 シフト量に従って 2バイト右シフトした 3 r dヮードを残 つているデータ (b 22, b 23) とマージした後、 パースト転送用バッファ 3 3のエントリ O x 8へ格納する。 3 r dワードのうちバースト転送用バッファ 3 3に格納されなかったデータ (b 32, b 33) は境界データバッファ 34に格 糸内される。
この時点でバースト転送用バッファのエントリ 0 X 0〜0 X 8のデータが有効 となるので、 この 3ヮードデータを転送先パスへバースト転送可能となる。
次に、 3回目の DMAコマンドを受け付けた場合について説明する。 まず、 デ ータシフト部 32は、 転送元バスから 2ワードデータ (c 20〜c 33) をパー スト読み込む。 先頭ワード (c 20, c 21, c 22, c 23) の読み込み時に 、 データシフト部 32は、 シフト量に従って 0バイトシフトした先頭ワードを 2 回目の DMAコマンドで境界データバッファ 34に格納されたデータ (b 32, b 33) とマージした後、 バースト転送用バッファ 33のエントリ 0 xCへ格納 する。 このとき余分な c 20, c 21は廃棄される。
続いて 2 n dワード (c 30, c 3 1, c 32, c 33) の読み込み時に、 デ 一タシフト部 32は、 シフト量に従って 0パイトシフトした 2 n dヮードをバー スト転送用バッファ 33のェントリ 0 X 10へ格納する。
この時点でパースト転送用バッファ 3 3のェントリ O x C~ 0 x 1 0のデータ が有効となるので、 この 2ワードを転送先パスへパースト転送可能となる。
上述した動作を、 例えば従来の DM ACで転送する場合には、 以下のように 4 回のパーシャルライトと 1回のヮードライトと 1回の 2ヮードバーストライトに 分割されることになる。 ここで、 従来の DMACを用いて、 バイト単位の任意ァ ドレス境界で分割されたデータセグメントを転送先バスへ出力する動作について 説明する。 上述した具体例と同様、 転送元パスと転送先パスのバス幅を 4バイト とし、 3回の DMAコマンドが起動されるものとする。
まず、 1回目の DMAコマンドを受け付けた場合について説明する。 データシ フト部 32は、 転送元から 1ワードデータ (a 1 0〜a 1 3) を読み込む。 デー タシフト部 32は、 シフト量に従って 1バイト左シフトした 2バイトのデータ ( a l l, a 1 2) を転送先バスへパーシャルライトする。 . 次に、 2回目の DMAコマンドを受け付けた場合について説明する。 データシ フト部 32は、 転送元パスから 3ワードデータ (b l 0〜b 33) をパースト読 み込む。 先頭ワード (b l O, b 11, b 12, b 13) の読み込み時に、 デー タシフト部 32は、 シフト量に従って 2パイト右シフトした先頭ワードのうち 2 バイトのデータ (b 10, b 1 1) を転送先バスへパーシャルライトする。 先頭 ワードのうちパーシャルライトされなかったデータ (b l 2, b 13) は 2バイ ト右シフトした形でデータシフト部 32に残っている。
続いて 2 n dワード (b 20, b 21 , b 22, b 23) の読み込み時に、 デ ータシフト部 32は、 シフト量に従って 2バイト右シフトした 2n dワードをデ ータシフト部 32に残っているデータ (b l 2, b 13) とマージした後、 パー スト転送用バッファ 34のェントリ 0 X 4へ格納する。 2n dヮードのうちパー スト転送用バッファ 34に格納されなかったデータ (b 22, b 23) は 2バイ ト右シフトした形でデータシフト部 32に残っている。
続いて 3 r dワード (b 30, b 31 , b 32, b 33) の読み込み時に、 デ 一タシフト部 32は、 シフト量に従って 2バイト右シフトした 3 r dヮードをデ ータシフト部 32に残っているデータ (b 22, b 23) とマージした後、 バー スト転送用バッファ 33のェントリ 0 X 8へ書き込む。 3 r dワードのうちパー スト転送用バッファ 33に格納されなかったデータ (b 32, b 33) は 2バイ ト右シフトした形でデータシフト部 32に残っている。
この時点でバースト転送用バッファのェントリ 0 x4と 0 x 8のデータが有効 となるので、 この 2ワードを転送先バスへ 2ワードパーストライトする。 3 r d ワードのうちバーストライトされなかったデータ (b 32, b 33) は転送先バ スへパーシャルライトする。
次に、 3回目の DMAコマンドを受け付けた場合について説明する。 データシ フト部 32は、 転送元バスから 2ワードデータ (c 20〜c 33) をバースト読 み込む。 先頭ワード (c 20, c 21, c 22, c 23) の読み込み時に、 デー タシフト部 32は、 メインコントローラの指示に従って、 0バイトシフトした先 頭ワードのうち指定された 2バイ トのデータ (c 22, c 23) のみを転送先パ スへパーシャルライトする。
続いて 2 n dワード (c 30, c 31 , c 32, c 33) の読み込み時に、 デ ータシフト部 3 2は、 メインコントローラの指示に従って、 0バイトシフトした
2 n dヮードを転送先バスへヮードライトする。
以上のように、 本実施の形態に係る DMA Cは、 従来の DMA Cと比較してバ ースト転送を積極的に用いることにより、 パスの使用効率を上げることができる なお、 本実施の形態では、 境界データバッファ 3 4とパースト転送用バッファ
3 3を備えること力 ら、 チェインモード転送の間隙に単発モード転送が混在する ことを許すことができる。 し力 し、 DMA C 1のイニシエータが単独であり、 か っチエインモード転送の間隙に単発モード転送が混在しないような特殊な場合に は、 バースト転送用バッファ 3 3にそのまま境界データを保持することも可能で ある。 この場合、 境界データバッファ 3 4は不要となる。
次に、 転送先がキャッシュ制御されたメモリである場合において、 キャッシュ ラインの境界に合わせたバースト転送サイズでパースト転送する動作について説 明する。 以後、 転送先であるキャッシュ制御されたメモリを、 転送先メモリと呼 ぶことにする。 また、 転送先メモリのキャッシュ制御は、 図示しない外部のキヤ ッシュ制御部が行う。
第 6図は、 キャッシュラインの境界に合わせたバースト転送サイズでバースト 転送する動作の一例を示す図である。 本実施の形態では、 説明を容易にするため 、 DMA Cが転送先メモリへ DMA転送を用いてデータを書き込んだ場合に、 外 部のキャッシュ制御部は書き込まれた部分のキャッシュ状態を 「無効」 にする I n V a 1 i d a t eの単純な制御を行うだけとする。 また、 バースト転送用バッ ファに格納するまでの動作は、 上述した動作と同様であり、 ここではパースト転 送用パッファに格納されたデータをバースト転送する動作だけを詳細に説明する 第 6図 (a ) は、 バースト転送用バッファのデータの配置を示す図である。 第 6図 (a ) において、 バースト転送用バッファには、 2回の DMAコマンドによ り読み込まれたデータが格納されている。 また、 d O , d lは 1回目の DMAコ マンドでバースト転送用バッファに格納されたデータ行を示し、 e 0〜e 1 5は 2回目の DMAコマンドでバースト転送用バッファに格納されたデータ行を示す 第 6図 (b) は、 キャッシュライン境界と無関係にバースト転送された、 従来 の転送先メモリのデータの配置を示す図である。 第 6図 (c) は、 キャッシュラ ィン境界に合わせてパースト転送された、 本発明の転送先メモリのデータの配置 を示す図である。 第 6図 (b) と第 6図 (c) において、 点線はキャッシュライ ン境界を示す。
第 6図 (b) に示すように、 転送先メモリのキャッシュライン境界と無関係に パースト転送を行った場合、 2回目のパースト転送でキャッシュライン境界をま たぐため、 転送先メモリのキャッシュ制御部は、 キャッシュラインの最初のェン トリにおいて I nv a l i d a t eを 2回、 キヤッシュラインの次のェントリに おいて I nv a l i d a t eを 1回、 合計 3回の I nv a l i d a t eを行うこ とになる。
本発明では、 アキュムレータ 23が転送先メモリのキャッシュラインの境界に 合わせたバースト転送サイズを算出し、 メインコントローラ 22が算出されたパ ースト転送サイズに従ってバスサイクル制御部 31を制御し、 バスサイクル制御 部 31がバースト転送用バッファに格納されたデータを転送先へバースト転送す る。 第 6図 (c) に示すように、 転送先メモリのキャッシュライン境界に合わせ てパースト転送を行った場合、 転送先メモリのキヤッシュ制御部はキヤッシュラ インの 2エントリ分の I nv a l i d a t eを 1回ずつ、 合計 2回行うだけで済 む。
以上のように、 本実施の形態に係る DMA Cは、 転送先メモリがキャッシュ制 御されている場合に、 転送先メモリのキャッシュライン境界に合わせてパースト 転送を行うことにより、 DMA C外部のキャッシュ制御部の負荷を低減すること ができる。
次に、 DMA C 1のイニシエータである CP U4が複数存在する場合、 もしく は C P U 4がマルチスレツドで動作するような場合の DMA Cの構成について説 明する。 この場合は、 第 1図において、 境界データバッファ 34の代わりに、 D MAC 1のイニシエータの数と同じ数の境界データと次のデータセグメントの転 送先アドレスオフセットとの組を格納しておく境界データバッファを備え、 さら にアキュムレータ 2 3の代わりに、 指示したイニシエータ毎の転送元アドレスォ フセットと転送先ァドレスオフセットに基づいてデータのシフト量を算出するァ キュムレータを備えることにより、 イニシエータが複数存在する場合の D M A C を実現できる。
以上のように、 本実施の形態に係る DMA Cは、 複数のイニシエータによる D MA転送の指示に対応することができる。 実施の形態 2 .
本実施の形態では、 DMA転送における転送元バスと転送先バスが物理的に別 のバスで、 パス幅が異なる場合の DMA Cの動作について説明する。 ここではチ ェインモードにより DM A転送を行うものとする。 第 7図は、 実施の形態 2に係 る DMA Cの構成の一例を示すプロック図である。 DMA C 1 1と C P U 1 5と I /O 1 6とメモリ 1 7は、 2バイト以上のパス幅を持つパス A 1 8を介して接 続されている。 また、 DMA C 1 1と I /O 1 9とメモリ 2 0は、 バス A 1 8の バス幅の整数倍のバス幅を持つバス B 2 1を介して接続されている。 ここで、 C P U 1 5は、 DMA C 1 1のイニシエータであり、 Iノ0 1 6とメモリ 1 7と I Ζθ 1 9とメモリ 2 0は、 DMA転送における転送元または転送先となり得る D M A転送対象である。
第 7図に示すように、 本実施の形態に係る DMA C 1 1は、 DMAコア 1 2と A t o Bデータ転送部 1 3と B t o Aデータ転送部 1 4から構成される。 DMA コア 1 2は、 コマンドデコーダ 1 2 1と、 メインコントローラ 1 2 2と、 アキュ ムレータ 1 2 3から構成される。 A t o Bデータ転送部 1 3は、 パスサイクル制 御部 1 3 1と、 データシフト部 1 3 2と、 バースト転送用バッファ 1 3 3と、 境 界データバッファ 1 3 4と、 データ再構成部 1 3 5から構成される。 同様に、 B t o Aデータ転送部 1 4は、 バスサイクル制御部 1 4 1と、 データシフト部 1 4 2と、 パースト転送用バッファ 1 4 3と、 境界データバッファ 1 4 4と、 データ 再構成部 1 4 5から構成される。
以下、 本実施の形態に係る DMA C 1 1の動作について説明する。 ここでは、 一方のパスに接続された DM A転送対象を転送元とし、 もう一方のバスに接続さ れた DMA転送対象を転送先とする場合、 すなわち転送元のバス幅と転送先のバ ス幅が異なる場合について説明する。
第 1の例として、 転送先のバス幅が、 転送元のバス幅の整数倍である場合、 す なわち、 転送元が I ZO 1 6またはメモリ 1 7で、 転送先が I /〇 1 9またはメ モリ 2 0である場合について説明する。 C P U 1 5から送信された DMAコマン ドは、 バス A 1 8を介してバスサイクル制御部 1 3 1で受信され、 コマンドデコ ーダ 1 2 1へ入力される。 次に、 コマンドデコーダ 1 2 1は、 DMAコマンドを 解釈し、 その結果得られた DMA転送に関する指示をメインコントローラ 1 2 2 へ出力する。 メインコントローラ 1 2 2は、 アキュムレータ 1 2 3に転送元アド レスオフセットと転送先ァドレスオフセットを与える。 アキュムレータ 1 2 3は 、 転送元ァドレスオフセットと転送先ァドレスオフセットに基づいて、 データシ フト部 1 3 2に与えるシフト量を算出し、 メインコントローラ 1 2 2へ出力する ここで、 チヱインフラグが有りであれば、 メインコントローラ 1 2 2は境界デ ータバッファに格納されたァドレスオフセットを読み込み、 転送先ァドレスオフ セットとしてアキュムレータ 1 2 3に与える。 境界データバッファ 1 3 4は、 前 のデータセグメントにおいてバス幅単位で区切った余りのデータでパス幅未満の データである境界データと、 その境界データによって生じる転送先ァドレスオフ セットを格納している。
次に、 メインコントローラ 1 2 2は、 バスサイクル制御部 1 3 1に対して、 転 送元からのデータの読み込みの指示を行う。 バスサイクル制御部 1 3 1は転送元 からデータを読み込み、 データシフト部 1 3 2へ出力する。 データシフト部 1 3 2は、 実施の形態 1と同様の動作を行うが、 シフトや境界データとのマージを行 つたデータをデータ再構成部 1 3 5へ出力する。 データ再構成部 1 3 5は、 バス B 2 1のバス幅に合うように、 入力されたバス A 1 8のパス幅のデータを結合し 、 パースト転送用バッファ 1 3 3へ出力する。 例えば、 パス B 2 1のパス幅がバ ス A 1 8のバス幅の n倍であれば、 データ再構成部 1 3 5は入力された n個のデ ータを結合してパースト転送用バッファ 1 3 3へ出力する。 バースト転送用バッ ファ 1 3 3は、 データをバス B 2 1のパス幅単位で格納する。 次に、 データシフト部 1 3 2と境界データバッファ 1 3 4の動作について具体 例を用いて説明する。 第 8図は、 転送元のバス幅が 2バイト、 転送先のパス幅が 4パイトである場合のデータシフト部の入出力データの一例を示す図である。 第 4図と同様、 第 8図の表において、 列の上側に記した数値は、 対応する列に記さ れたケースにおける転送元アドレスオフセットを表し、 行の左側に記した数値は 、 対応する行に記されたケースにおける転送先アドレスオフセットを表す。 第 8 図の表における 1つのセルは、 列に対応する転送元ァドレスオフセットと行に対 応する転送先アドレスオフセットを持ったケースを表し、 セルの内容はそのケー スにおける入力データ i 0 , i lと出力データ ο θ , o l, o 2 , o 3を表す。 また、 Xは、 チェインモードにおける前の DMAコマンドにより転送元から読み 込まれたデータであり、 a, b , c , dは、 チェインモードにおける現在の DM Aコマンドにより転送元から読み込まれるデータでありチエインが継続する場合 、 zはチエインモードにおける次の DMAコマンドで転送元から読み込まれる次 のデータであり、 チェインが継続しない場合、 zは存在しなレ、。 第 4図と同様、 2バイ トの入力データ i 0, i 1は、 データシフト部 1 3 2でシフトされ、 必要 に応じて境界データとマージされた後、 データ再構成部 1 3 5により結合されて 、 4バイ トの出力データ o 0 , o l, o 2, o 3としてバースト転送用バッファ 1 3 3へ出力される。
バスサイクル制御部 1 4 1は、 バースト転送用バッファ 1 3 3に格納されたデ ータを、 パス B 2 1を介して転送先へバースト転送することにより転送先へデー タを書き込む。
次に、 第 2の例として、 転送元のバス幅が、 転送先のバス幅の整数倍である場 合、 すなわち、 転送元が I /O 1 9またはメモリ 2◦で、 転送先が I /〇 1 6ま たはメモリ 1 7である場合について説明する。 C P U 1 5から送信された DMA コマンドは、 パス A 1 8を介してパスサイクル制御部 1 3 1で受信され、 コマン ドデコーダ 1 2 1へ入力される。 次に、 コマンドデコーダ 1 2 1は、 DMAコマ ンドを解釈し、 その結果得られた DMA転送に関する指示をメインコントローラ
1 2 2へ出力する。 メインコントローラ 1 2 2は、 アキュムレータ 1 2 3に転送 元ァドレスオフセットと転送先ァドレスオフセットを与える。 アキュムレータ 1 2 3は、 転送元ァドレスオフセットと転送先ァドレスオフセットに基づいて、 デ 一タシフト部 1 4 2に与えるシフト量を算出し、 メインコントローラ 1 2 2へ出 力する。
ここで、 チェインフラグが有りであれば、 メインコントローラ 1 2 2は境界デ ータバッファに格納されたァドレスオフセットを読み込み、 転送先ァドレスオフ セットとしてアキュムレータ 1 2 3に与える。 境界データバッファ 1 4 4は、 前 のデータセグメントにおいてバス幅単位で区切った余りのデータでバス幅未満の データである境界データと、 その境界データによって生じる転送先アドレスオフ セットを格^!している。
次に、 メインコントローラ 1 2 2は、 バスサイクル制御部 1 4 1に対して、 転 送元からのデータの読み込みに関する指示を行う。 バスサイクル制御部 1 4 1は 、 メインコントローラ 1 2 2からの指示に従って転送元からデータを読み込み、 データシフト部 1 4 2へ出力する。 データシフト部 1 4 2は、 実施の形態 1と同 様の動作を行うが、 シフトゃ境界データとのマージを行ったデータをデータ再構 成部 1 4 5へ出力する。 データ再構成部 1 4 5は、 バス A 1 8のバス幅に合うよ うに、 入力されたパス B 2 1のパス幅のデータを分割し、 バースト転送用パッフ ァ 1 4 3へ出力する。 例えば、 パス B 2 1のバス幅がバス A 1 8のパス幅の n倍 であれば、 データ再構成部 1 4 5は入力されたデータを n個に等分してバースト 転送用バッファ 1 4 3へ出力する。 パースト転送用バッファ 1 4 3は、 データを バス A 1 8のパス幅単位で格納する。
次に、 データシフト部 1 4 2と境界データバッファ 1 4 3の動作について具体 例を用いて説明する。 第 9図は、 転送元のバス幅が 2バイト、 転送先のバス幅が 4パイトである場合のデータシフト部の入出力データの一例を示す図である。 第 8図と同様、 第 9図の表における 1つのセルは、 列に対応する転送元アドレスォ フセットと行に対応する転送先ァドレスオフセットを持ったケースを表し、 セル の内容はそのケースにおける入力データ i 0, i 1, i 3 , i 4と出力データ o 0, o lを表す。 また、 第 8図と同様、 Xは、 チェインモードにおける前の DM Aコマンドにより転送元から読み込まれたデータであり、 a , b , c , dは、 チ ヱインモードにおける現在の DMAコマンドにより転送元から読み込まれるデー タであり、 チヱインが,継続する場合、 zはチヱインモードにおける次の DMAコ マンドで転送元から読み込まれる次のデータであり、 チエインが II続しない場合 、 zは存在しない。 第 4図と同様、 4バイ トの入力データ i 0, i 1, i 3, i 4は、 データシフト部 1 4 2でシフトされ、 必要に応じて境界データとマージさ れた後、 データ再構成部 1 4 5により分割されて、 2バイトの出力データ o 0 , o 1としてバースト転送用バッファ 1 1 4 3へ出力される。
バスサイクル制御部 1 3 1は、 バースト転送用バッファ 1 4 3に格納されたデ ータを、 バス A 1 8を介して転送先へパースト転送することにより転送先へデー タを書き込む。
以上のように、 本実施の形態に係る DM A Cは、 バイト単位の任意のアドレス 境界で分割されたデータセグメントを、 転送元とは異なるバス幅を持つ転送先へ チエインモードで DMA転送する際に、 できるだけバースト転送を行うようにデ ータを組み立てなおすことにより、 パスの使用効率を上げることができる。 なお、 本実施の形態においても、 転送先メモリがキャッシュ制御されている場 合に、 実施の形態 1で説明したキヤッシュライン境界に合わせたバースト転送を 適用することができる。 また、 本実施の形態において DMA C 1 1のィニシエー タである C P Uが複数存在する場合、 もしくは C P Uがマルチスレッドで動作す るような場合についても、 第 7図において、 境界データバッファ 1 3 4, 1 4 4 の代わりに、 イニシエータの数と同じ数の境界データと次のデータセグメントの 転送先ァドレスオフセットとの組を格納しておく境界データバッファをそれぞれ 備え、 さらにアキュムレータ 1 2 3の代わりに、 指示したイニシエータ毎の転送 元ァドレスオフセットと転送先ァドレスオフセットに基づいてデータのシフト量 を算出するアキュムレータを備えることにより、 ィニシエータが複数存在する場 合の DMA Cを実現できる。 産業上の利用の可能性
以上説明したように、 本発明によれば、 バイト単位の任意のアドレス境界で分 割されたデータセグメントをチヱインモードで DMA転送する際に、 できるだけ バースト転送を行うようにデータを組み立てなおすことにより、 パスの使用効率 を上げることができる。 また、 転送先メモリがキャッシュ制御されている場合に 、 転送先メモリのキャッシュライン境界に合わせてバースト転送を行うことによ り、 DMA C外部のキャッシュ制御部の負荷を低減することができる。 結果とし て、 任意のバイトァドレスで分割されたデータセグメントをチエインモードで D MA転送する場合にデータ転送回数を少なくして全体として転送時間を短縮する ことができる。

Claims

請 求 の 範 囲
1 . パスを介して DMA転送の転送元と転送先にアクセスし、 外部のィニシエー タの指示に従って転送元における複数のデータセグメントをチェインし、 転送先 へバースト転送する DM A制御装置であって、
転送元のデータセグメントを第 1のデータとして読み込むバス読み込み部と、 データをパス幅単位で格納するバースト転送用バッファと、
パス幅単位で区切った余りのデータでバス幅未満のデータである境界データが 発生する場合に、 該境界データと次のデータセグメントの転送先ァドレスオフセ ットとを格納する境界データバッファと、
前記イニシエータの から得られる転送元ァドレスオフセットと前記境界デ ータバッファが格納する転送先ァドレスオフセットとに基づいて前記第 1のデー タのシフト量を算出するアキュムレータと、 .
前記シフト量に応じて前記第 1のデータのシフトを行い、 前のデータセグメン トで発生した境界データとシフトした前記第 1のデータとをマージして第 2のデ ータを生成し、 前記第 2のデータに境界データが発生し且つ次のデータセグメン トをチエインする場合に、 該境界データと次のデータセグメントの転送先ァドレ スオフセットとを前記境界データバッファへ出力するとともに、 前記第 2のデー タのうち前記境界データ以前のデータを前記パースト転送用バッファへ出力する データシフト部と、
前記パースト転送用バッファに格納されたデータを転送先へパースト転送する バス書き込み部と
を備えてなる DMA制御装置。
2 . 請求の範囲第 1項に記載の DMA制御装置において、
前記データシフト部は、 前記第 2のデータに境界データが発生し且つ次のデー タセグメントをチェインする前記場合以外においては、 前記第 2のデータを前記 バースト転送用バッファへ出力することを特徴とする DM A制御装置。
3 . 請求の範囲第 1項に記載の DMA制御装置において、
転送先がキヤッシュ制御されている場合、
前記アキュムレータは、 さらにキャッシュラインの境界に合わせたパースト転 送サイズを算出し、 前記パス書き込み部は、 前記バースト転送サイズに従って前 記パースト転送用パッファに格納されたデータを転送先へバースト転送すること を特徴とする DMA制御装置。
4 . 請求の範囲第 1項に記載の DMA制御装置において、
前記外部のイニシエータが複数ある場合、
前記境界データバッファは、 境界データと次のデータセグメントの転送先ァド レスオフセットの組を前記イニシエータの数と同数だけ格納し、 前記アキュムレ ータは、 指示したイニシエータ毎の前記転送元ァドレスオフセットと転送先ァド レスオフセットに基づいてデータのシフト量を算出することを特徴とする DMA
5 · 異なる幅を持つ複数のバスに接続された DMA転送の転送元と転送先にァク セスし、 外部のイニシエータに従って転送元における複数のデータセグメントを チェインし、 転送先へパースト転送する DMA制御装置であって、
転送元のデータセグメントを第 1のデータとして読み込むバス読み込み部と、 データを転送先パス幅単位で格納するパースト転送用バッファと、
転送元パス幅単位で区切った余りのデータで転送元バス幅未満のデータである 境界データが発生する場合に、 該境界データと次のデータセグメントの転送先ァ ドレスオフセットとを格納する境界データバッファと、
前記イニシエータの指示から得られる転送元ァドレスオフセットと前記境界デ ータバッファが格納する転送先ァドレスオフセッ卜とに基づいて前記第 1のデー タのシフト量を算出するアキュムレータと、
転送元パス幅単位のデータを転送先バス幅単位のデータに並べ替えて前記パー スト転送用バッファへ出力するデータ再構成部と、
前記シフト量に応じて前記第 1のデータのシフトを行い、 前のデータセグメン トで発生した境界データとシフトした前記第 1のデータとをマージして第 2のデ ータを生成し、 前記第 2のデータに境界データが発生し且つ次のデータセグメン トをチェインする場合に、 該境界データと次のデータセグメントの転送先ァドレ スオフセットとを前記境界データバッファへ出力するとともに、 前記第 2のデー タのうち前記境界データ以前のデータを前記データ再構成部へ出力するデータシ フト部と、
前記パースト転送用バッファに格納されたデ一タを転送先へバースト転送する バス書き込み部と
を備えてなる DM A制御装置。
6 . 請求の範囲第 5項に記載の DMA制御装置において、
前記データシフト部は、 前記第 2のデータに境界データが発生し且つ次のデー タセグメントをチエインする前記場合以外においては、 前記第 2データを前記再 構成部へ出力することを特徴とする DMA制御装置。
7 . 請求の範囲第 5項に記載の DMA制御装置において、
前記データ再構成部は、 転送先パス幅が転送元パス幅の整数倍である場合に、 データシフト部の出力するデータを結合して前記バースト転送用バッファへ出力 し、 転送元バス幅が転送先パス幅の整数倍である場合に、 データシフト部の出力 するデータを分割して前記パースト転送用パッファへ出力することを特徴とする DMA制御装置。
8 . 請求の範囲第 7項に記載の DMA制御装置において、
転送先がキヤッシュ制御されている場合、 . 前記アキュムレータは、 さらにキャッシュラインの境界に合わせたバースト転 送サイズを算出し、 前記パス書き込み部は、 前記バースト転送サイズに従って前 記バースト転送用バッファに格納されたデータを転送先へパースト転送すること を特徴とする DMA制御装置。
9 . 請求の範囲第 7項に記載の DMA制御装置において、
前記外部のィ二シエータが複数ある場合、
前記境界データパッフ了は、 境界データと次のデータセグメントの転送先ァド レスオフセットの組を前記イニシエータの数と同数だけ格納し、 前記アキュムレ ータは、 指示したイニシエータ毎の前記転送元ァドレスオフセットと転送先ァド レスオフセットに基づいてデータセグメントのシフト量を算出することを特 f$ [と する DM A制御装置。
1 0 . パスを介して DMA転送の転送元と転送先にアクセスし、 外部のィニシェ ータの指示に従って転送元における複数のデータセグメントをチエインし、 転送 先へバースト転送する DMA制御方法であって、
転送元のデータセグメントを第 1のデータとして読み込むステップと、 前記イニシエータの指示から得られる転送元ァドレスオフセットと、 前のデー タセグメントをバス幅単位で区切った余りのデータでバス幅未満のデータである 境界データが発生した場合の転送先ァドレスオフセットとに基づいて前記第 1の データのシフト量を算出するステップと、
前記シフト量に応じて前記第 1のデータのシフトを行い、 前のデータセグメン トで発生した境界データとシフトした前記第 1のデータとをマージして第 2のデ ータを生成し、 前記第 2のデータに境界データが発生し且つ次のデータセグメン トをチェインする場合に、 該境界データと次のデータセグメントの転送先ァドレ スオフセットとを格納するとともに、 前記第 2のデータのうち前記境界データ以 前のデータをバースト転送用データとして格納するステップと、
前記バースト転送用データを転送先へバースト転送するステップと
を備えてなる D M A制御方法。
1 1 . 請求の範囲第 1 0項に記載の DMA制御方法において、
前記第 2のデータに境界データが発生し且つ次のデータセグメントをチヱイン する前記場合以外においては、 前記第 2データセグメントをバースト転送用デー タとして格納するステップを備えることを特徴とする D M A制御方法。
1 2 . 異なる幅を持つ複数のパスに接続された DMA転送の転送元と転送先にァ クセスし、 外部のイニシエータに従って転送元における複数のデータセグメント をチェインし、 転送先へパースト転送する DMA制御方法であって、
転送元のデータセグメントを第 1のデータとして読み込むステップと、 前記イニシエータの指示から得られる転送元ァドレスオフセットと、 前のデー タセグメントを転送元パス幅単位で区切った余りのデータで転送元パス幅未満の データである境界データが発生した場合の転送先ァドレスオフセットとに基づい て前記第 1のデータのシフト量を算出するステップと、
前記シフト量に応じて前記第 1のデータのシフトを行い、 前のデータセグメン トで発生した境界データとシフトした前記第 1のデータとをマージして第 2のデ ータを生成し、 前記第 2のデータに境界データが発生し且つ次のデータセグメン トをチエインする場合に、 該境界データと次のデータセグメントの転送先ァドレ スオフセットとを格納するとともに、 前記第 2のデータのうち前記境界データ以 前のデータを転送先バス幅単位のデータに並べ替えてパースト転送用データとし て格納するステップと、
前記バースト転送用データを転送先へバースト転送するステツプと
を備えてなる D M A制御方法。
1 3 . 請求の範囲第 1 2項に記載の DMA制御方法において、
前記第 2のデータに境界データが発生し且つ次のデータセグメントをチェイン する前記場合以外においては、 前記第 2のデータを転送先パス幅単位のデータに 並べ替えてバースト転送用データとして格納するステップを備えることを特徴と する DM A制御方法。
1 4 . パスを介して DMA転送の転送元と転送先にアクセスし、 外部のィニシェ ータの指示に従って転送元における複数のデータセグメントをチェインし、 転送 先へバースト転送する動作をコンピュータに実行させるために、 コンピュータに より読取可能な媒体に記憶された DMA制御プログラムであって、 転送元のデータセグメントを第 1のデータとして読み込むステップと、 前記イニシエータの指示から得られる転送元ァドレスオフセットと、 前のデー タセグメントをパス幅単位で区切った余りのデータでバス幅未満のデータである 境界データが発生した場合の転送先ァドレスオフセットとに基づいて前記第 1の データのシフト量を算出するステップと、
前記シフト量に応じて前記第 1のデータのシフトを行い、 前のデータセグメン トで発生した境界データとシフトした前記第 1のデータとをマージして第 2のデ ータを生成し、 前記第 2のデータに境界データが発生し且つ次のデータセグメン トをチェインする場合に、 該境界データと次のデータセグメントの転送先ァドレ スオフセットとを格納するとともに、 前記第 2のデータのうち前記境界データ以 前のデータをバースト転送用データとして格納するステップと、
前記バースト転送用データを転送先へバースト転送するステップと
をコンピュータに実行させる D M A制御プログラム。
1 5 . 請求の範囲第 1 4項に記載の DMA制御プログラムにおいて、
前記第 2のデータに境界データが発生し且つ次のデータセグメントをチエイン する前記場合以外においては、 前記第 2のデータを前記バースト転送用バッファ へ格納するステップをコンピュータに実行させることを特徴とする D M A制御プ 口グラム。
1 6 . 異なる幅を持つ複数のバスに接続された DMA転送の転送元と転送先にァ クセスし、 外部のイニシエータに従って転送元における複数のデータセグメント をチヱインし、 転送先へバースト転送する動作をコンピュータに実行させるため に、 コンピュータにより読取可能な媒体に記憶された DMA制御プログラムであ つて、
転送元のデータセグメントを第 1のデータとして読み込むステップと、 前記イニシエータの指示から得られる転送元アドレスオフセットと、 前のデー タセグメントを転送元バス幅単位で区切った余りのデータで転送元バス幅未満の データである境界データが発生した場合の転送先ァドレスオフセットとに基づい て前記第 1のデータのシフト量を算出するステップと、
前記シフト量に応じて前記第 1のデータのシフトを行い、 前のデータセグメン トで発生した境界データとシフトした前記第 1のデータとをマージして第 2のデ ータを生成し、 前記第 2のデータに境界データが発生し且つ次のデータセグメン トをチエインする場合に、 該境界データと次のデータセグメントの転送先ァドレ スオフセットとを格納するとともに、 前記第 2のデータのうち前記境界データ以 前のデータを転送先パス幅単位のデータに並べ替えてパースト転送用データとし て格納するステップと、
前記パースト転送用データを転送先へバースト転送するステップと
をコンピュータに実行させる D M A制御プログラム。
1 7 . 請求の範囲第 1 6項に記載の D1VIA制御プログラムにおいて、
前記第 2のデータに境界データが発生し且つ次のデータセグメントをチエイン する前記場合以外においては、 前記第 2のデータを転送先パス幅単位のデータに 並べ替えてバースト転送用データとして格納するステップをコンピュータに実行 させることを特徴とする DM A制御プログラム。
PCT/JP2002/013384 2002-12-20 2002-12-20 Dma制御装置、dma制御方法、dma制御プログラム WO2004057481A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2002/013384 WO2004057481A1 (ja) 2002-12-20 2002-12-20 Dma制御装置、dma制御方法、dma制御プログラム
JP2004562007A JPWO2004057481A1 (ja) 2002-12-20 2002-12-20 Dma制御装置、dma制御方法、dma制御プログラム
US11/024,761 US7330914B2 (en) 2002-12-20 2004-12-30 DMA controller, DMA control method and DMA control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2002/013384 WO2004057481A1 (ja) 2002-12-20 2002-12-20 Dma制御装置、dma制御方法、dma制御プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/024,761 Continuation US7330914B2 (en) 2002-12-20 2004-12-30 DMA controller, DMA control method and DMA control program

Publications (1)

Publication Number Publication Date
WO2004057481A1 true WO2004057481A1 (ja) 2004-07-08

Family

ID=32676932

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2002/013384 WO2004057481A1 (ja) 2002-12-20 2002-12-20 Dma制御装置、dma制御方法、dma制御プログラム

Country Status (3)

Country Link
US (1) US7330914B2 (ja)
JP (1) JPWO2004057481A1 (ja)
WO (1) WO2004057481A1 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007200245A (ja) * 2006-01-30 2007-08-09 Sharp Corp システムバス制御装置、集積回路およびデータ処理システム
US8059505B2 (en) 2007-09-14 2011-11-15 Seiko Epson Corporation Data writing control device, data writing control method, and data writing control program for writing to an optical disc
JP2012123465A (ja) * 2010-12-06 2012-06-28 Olympus Corp データ処理装置
US9034295B2 (en) 2009-04-24 2015-05-19 Simbol, Inc. Preparation of lithium carbonate from lithium chloride containing brines
US9074265B2 (en) 2010-02-17 2015-07-07 Simbol, Inc. Processes for preparing highly pure lithium carbonate and other highly pure lithium containing compounds
US10190030B2 (en) 2009-04-24 2019-01-29 Alger Alternative Energy, Llc Treated geothermal brine compositions with reduced concentrations of silica, iron and lithium
US10773970B2 (en) 2009-04-24 2020-09-15 Terralithium Llc Preparation of lithium carbonate from lithium chloride containing brines

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006251916A (ja) * 2005-03-08 2006-09-21 Fujitsu Ltd Dma転送システム及びdma転送方法
EP1955174A1 (en) * 2005-11-09 2008-08-13 Nokia Corporation Apparatus, method and computer program product providing data serializing by direct memory access controller
US20070250689A1 (en) * 2006-03-24 2007-10-25 Aris Aristodemou Method and apparatus for improving data and computational throughput of a configurable processor extension
US7933034B2 (en) * 2006-04-06 2011-04-26 Kabushiki Kaisha Toshiba Image data processing circuit and image forming apparatus having the same
US7523228B2 (en) * 2006-09-18 2009-04-21 International Business Machines Corporation Method for performing a direct memory access block move in a direct memory access device
US20090276556A1 (en) * 2006-10-04 2009-11-05 Mediatek Inc. Memory controller and method for writing a data packet to or reading a data packet from a memory
US20080086577A1 (en) * 2006-10-04 2008-04-10 Mediatek Inc. Digital Television System, Memory Controller, and Method for Data Access
US7603490B2 (en) * 2007-01-10 2009-10-13 International Business Machines Corporation Barrier and interrupt mechanism for high latency and out of order DMA device
US7620749B2 (en) * 2007-01-10 2009-11-17 International Business Machines Corporation Descriptor prefetch mechanism for high latency and out of order DMA device
US8918552B2 (en) * 2008-10-24 2014-12-23 International Business Machines Corporation Managing misaligned DMA addresses
US9218183B2 (en) * 2009-01-30 2015-12-22 Arm Finance Overseas Limited System and method for improving memory transfer
US8637428B1 (en) 2009-12-18 2014-01-28 Simbol Inc. Lithium extraction composition and method of preparation thereof
US9051827B1 (en) 2009-09-02 2015-06-09 Simbol Mining Corporation Selective removal of silica from silica containing brines
US10935006B2 (en) 2009-06-24 2021-03-02 Terralithium Llc Process for producing geothermal power, selective removal of silica and iron from brines, and improved injectivity of treated brines
WO2012014400A1 (ja) * 2010-07-27 2012-02-02 パナソニック株式会社 データ転送制御装置及びデータ転送制御方法
JP2014167763A (ja) * 2013-02-28 2014-09-11 Canon Inc 電子機器及びその制御方法
KR101861744B1 (ko) * 2013-02-28 2018-05-29 삼성전자주식회사 데이터 블록 오프셋에 기초하여 버퍼 디스크립터의 타겟 엔트리 어드레스를 계산할 수 있는 집적 회로와 상기 집적 회로를 포함하는 시스템
US10110518B2 (en) 2013-12-18 2018-10-23 Mellanox Technologies, Ltd. Handling transport layer operations received out of order
US10019397B2 (en) 2014-03-28 2018-07-10 Texas Instruments Incorporated Real-time data acquisition using chained direct memory access (DMA) channels
US10459634B2 (en) * 2015-10-31 2019-10-29 Sandisk Technologies Llc Methods, systems, and computer readable media for aggregating completion entries in a nonvolatile storage device
US10604414B2 (en) 2017-06-15 2020-03-31 Energysource Minerals Llc System and process for recovery of lithium from a geothermal brine
US11622004B1 (en) 2022-05-02 2023-04-04 Mellanox Technologies, Ltd. Transaction-based reliable transport

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59226956A (ja) * 1983-06-07 1984-12-20 Nec Corp デ−タ制御システム
JPS61235959A (ja) * 1985-04-11 1986-10-21 Fujitsu Ltd デ−タ転送方式
JPS6298444A (ja) * 1985-10-25 1987-05-07 Hitachi Ltd デ−タ通信方式
JPH01114952A (ja) * 1987-10-29 1989-05-08 Nec Corp 情報処理装置におけるメモリ間転送方式
JPH02287661A (ja) * 1989-04-27 1990-11-27 Toshiba Corp データアクセス方式
JPH03228163A (ja) * 1990-02-02 1991-10-09 Oki Electric Ind Co Ltd データ転送装置
US5111425A (en) * 1989-01-23 1992-05-05 Hitachi Ltd. Single chip communication data processor with direct memory access controller having a channel control circuit
JPH04247540A (ja) * 1991-02-04 1992-09-03 Nec Corp メモリ間ブロック転送方式
JPH05233522A (ja) * 1992-02-24 1993-09-10 Matsushita Electric Ind Co Ltd Dma転送装置
US5313607A (en) * 1990-02-22 1994-05-17 Kabushiki Kaisha Toshiba Direct memory access controller
US5594923A (en) * 1991-12-24 1997-01-14 Kabushiki Kaisha Toshiba Direct memory access controller comprising a multi-word data register for high speed continuous data transfer
JPH09128324A (ja) * 1995-10-31 1997-05-16 Sony Corp データ転送制御装置およびデータ転送制御方法
EP1006451A1 (en) * 1998-11-30 2000-06-07 Matsushita Electric Industrial Co., Ltd. A DMA transfer device capable of high-speed consecutive access to pages in a memory

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02301851A (ja) 1989-05-16 1990-12-13 Nec Corp システムバスアクセス方式

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59226956A (ja) * 1983-06-07 1984-12-20 Nec Corp デ−タ制御システム
JPS61235959A (ja) * 1985-04-11 1986-10-21 Fujitsu Ltd デ−タ転送方式
JPS6298444A (ja) * 1985-10-25 1987-05-07 Hitachi Ltd デ−タ通信方式
JPH01114952A (ja) * 1987-10-29 1989-05-08 Nec Corp 情報処理装置におけるメモリ間転送方式
US5111425A (en) * 1989-01-23 1992-05-05 Hitachi Ltd. Single chip communication data processor with direct memory access controller having a channel control circuit
JPH02287661A (ja) * 1989-04-27 1990-11-27 Toshiba Corp データアクセス方式
JPH03228163A (ja) * 1990-02-02 1991-10-09 Oki Electric Ind Co Ltd データ転送装置
US5313607A (en) * 1990-02-22 1994-05-17 Kabushiki Kaisha Toshiba Direct memory access controller
JPH04247540A (ja) * 1991-02-04 1992-09-03 Nec Corp メモリ間ブロック転送方式
US5594923A (en) * 1991-12-24 1997-01-14 Kabushiki Kaisha Toshiba Direct memory access controller comprising a multi-word data register for high speed continuous data transfer
JPH05233522A (ja) * 1992-02-24 1993-09-10 Matsushita Electric Ind Co Ltd Dma転送装置
JPH09128324A (ja) * 1995-10-31 1997-05-16 Sony Corp データ転送制御装置およびデータ転送制御方法
EP1006451A1 (en) * 1998-11-30 2000-06-07 Matsushita Electric Industrial Co., Ltd. A DMA transfer device capable of high-speed consecutive access to pages in a memory

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007200245A (ja) * 2006-01-30 2007-08-09 Sharp Corp システムバス制御装置、集積回路およびデータ処理システム
US8059505B2 (en) 2007-09-14 2011-11-15 Seiko Epson Corporation Data writing control device, data writing control method, and data writing control program for writing to an optical disc
US8264924B2 (en) 2007-09-14 2012-09-11 Seiko Epson Corporation Data writing control device, data writing control method, and data writing control program
US9034295B2 (en) 2009-04-24 2015-05-19 Simbol, Inc. Preparation of lithium carbonate from lithium chloride containing brines
US10190030B2 (en) 2009-04-24 2019-01-29 Alger Alternative Energy, Llc Treated geothermal brine compositions with reduced concentrations of silica, iron and lithium
US10773970B2 (en) 2009-04-24 2020-09-15 Terralithium Llc Preparation of lithium carbonate from lithium chloride containing brines
US11649170B2 (en) 2009-04-24 2023-05-16 Terralithium Llc Preparation of lithium carbonate from lithium chloride containing brines
US9074265B2 (en) 2010-02-17 2015-07-07 Simbol, Inc. Processes for preparing highly pure lithium carbonate and other highly pure lithium containing compounds
JP2012123465A (ja) * 2010-12-06 2012-06-28 Olympus Corp データ処理装置

Also Published As

Publication number Publication date
JPWO2004057481A1 (ja) 2006-04-27
US20050108446A1 (en) 2005-05-19
US7330914B2 (en) 2008-02-12

Similar Documents

Publication Publication Date Title
WO2004057481A1 (ja) Dma制御装置、dma制御方法、dma制御プログラム
JP3899085B2 (ja) ネットワーク装置
JP4445998B2 (ja) 調停パケットプロトコルを有するメモリ調停システムおよび方法
US8032670B2 (en) Method and apparatus for generating DMA transfers to memory
EP0993680B1 (en) Method and apparatus in a packet routing switch for controlling access at different data rates to a shared memory
EP0991999B1 (en) Method and apparatus for arbitrating access to a shared memory by network ports operating at different data rates
US5708779A (en) Multimedia system and method of controlling data transfer between a host system and a network adapter using a DMA engine
US9854072B1 (en) Script-controlled egress packet modifier
JP6899852B2 (ja) ストレージ装置
US7165126B2 (en) Direct memory access device
JP2008310832A (ja) 高レベル・データ・リンク・コントローラから多数個のディジタル信号プロセッサ・コアに信号を分配するための装置と方法
TW556077B (en) Controller for improving buffer management efficiency and the buffer management method
JP2007034392A (ja) 情報処理装置及びデータ処理方法
JP4855864B2 (ja) ダイレクトメモリアクセスコントローラ
US20060095637A1 (en) Bus control device, arbitration device, integrated circuit device, bus control method, and arbitration method
US20100061376A1 (en) Shared memory system
US7508836B2 (en) Data processing apparatus and method for handling transactions
JP2003308288A (ja) マイクロコンピュータシステム
JP5497743B2 (ja) 複数のプロセスからメモリ領域へのアクセスを制御する方法、及び、本方法を実現するためのメッセージメモリを備えた通信モジュール
US9450890B2 (en) Pipelined egress packet modifier
JP2006119962A (ja) データキュー制御回路、方法及びプログラム
JPH06168199A (ja) 入出力制御方式
JPH06162095A (ja) パラメータ検索方式
JPH02254557A (ja) 通信制御処理装置

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP US

WWE Wipo information: entry into national phase

Ref document number: 2004562007

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 11024761

Country of ref document: US