トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 集信装置に対する連結リストメモリアクセス制御
【発明者】 【氏名】サチェタ エス.チョドネカー

【氏名】アヴィナシュ エヌ.ヴェリングカー

【要約】 【課題】集信装置に対する連結リストメモリアクセス制御【解決手段】中央マイクロプロセッサは、定期的に、例えば、各データポンプ内の状態レジスタをポーリングすることで、どのデータポンプを処理すべきであるかを決定する。各状態レジスタからの情報を用いて、中央マイクロプロセッサは、連結リスト直接メモリアクセスコントローラLLDMACおよび処理(サービス)のために各データポンプに割当てられたマイクロプロセッサシステム内のシステムメモリバッファの対応する位置を、プログラムする。中央マイクロプロセッサは、LLDMACおよびシステムメモリバッファの対応する位置を、連結チェーンと呼ばれる処理すべき各データポンプのアドレスを連結するチェーンがシステムメモリバッファ内に格納されるポインタ情報によって形成されるようなやり方にてプログラムする。

【解決手段】中央マイクロプロセッサは、定期的に、例えば、各データポンプ内の状態レジスタをポーリングすることで、どのデータポンプを処理すべきであるかを決定する。各状態レジスタからの情報を用いて、中央マイクロプロセッサは、連結リスト直接メモリアクセスコントローラLLDMACおよび処理(サービス)のために各データポンプに割当てられたマイクロプロセッサシステム内のシステムメモリバッファの対応する位置を、プログラムする。中央マイクロプロセッサは、LLDMACおよびシステムメモリバッファの対応する位置を、連結チェーンと呼ばれる処理すべき各データポンプのアドレスを連結するチェーンがシステムメモリバッファ内に格納されるポインタ情報によって形成されるようなやり方にてプログラムする。
【特許請求の範囲】
【請求項1】 一つあるいは複数のデータポンプに対するデータを転送するための装置であって、1)前記一つあるいは複数のデータポンプのアドレスのシーケンスに対応する連結チェーンを形成するため、および2)各データポンプに対して(システム)メモリバッファを割当てるための中央プロセッサを備え、前記(システム)メモリバッファが前記対応するデータポンプのアドレス、および前記シーケンス内に複数のアドレスが存在する場合、前記シーケンス内の次のデータポンプのアドレスに対応するメモリバッファのアドレスを指すポインタを格納し;この装置がさらに前記中央プロセッサからの信号に応答して、対応するデータポンプと現在のメモリバッファとの間でデータを転送するために、現在のメモリバッファを処理するメモリアクセスコントローラを備え、前記メモリアクセスコントローラが、1)処理すべきメモリバッファを、存在する場合、現在のメモリバッファのポインタに基づいて識別し、2)前記一つあるいは複数のデータポンプのデータの転送を前記連結チェーンに対応する順番(シーケンス)にて行なうことを特徴とする装置。
【請求項2】 前記メモリバッファがデータ長値を含み、前記メモリアクセスコントローラが、前記対応するデータポンプのデータを前記メモリバッファ内に前記データ長値に従って充填することを特徴とする請求項1記載の装置。
【請求項3】 前記メモリバッファが、現在のメモリバッファが連結チェーンの最後のメモリバッファであるか否かを示す終端署名値を含み、前記メモリアクセスコントローラが前記連結チェーン内のメモリバッファの処理を前記終端署名値に基づいて終端することを特徴とする請求項1記載の装置。
【請求項4】 各データポンプが、内部データポンプメモリバッファおよび前記メモリアクセスコントローラの処理に基づいてデータを入り方向あるいは出方向に順番に転送するための前記バッファ内の位置を指す索引ポインタを含むことを特徴とする請求項1記載の装置。
【請求項5】 前記メモリアクセスコントローラが前記連結チェーンと関連する一つあるいは複数のデータポンプに対する一つあるいは複数のメモリバッファを処理している間に、前記中央プロセッサが他の処理タスクを遂行することを特徴とする請求項1記載の装置。
【請求項6】 前記装置が集積回路として実現されることを特徴とする請求項1記載の装置。
【請求項7】 前記装置がモデムプール集信装置内で用いられ、各データポンプがモデムデータを処理することを特徴とする請求項1記載の装置。
【請求項8】 一つあるいは複数のデータポンプに対するデータを転送するための方法であって、a)前記一つあるいは複数のデータポンプのアドレスのシーケンスに対応する連結チェーンを形成するステップ;およびb)各データポンプに対してメモリバッファを割当てるステップを含み、前記メモリバッファが1)対応するデータポンプのアドレス、および前記シーケンス内に複数のアドレスが存在する場合、2)前記シーケンス内の次のデータポンプのアドレスに対応するメモリバッファのアドレスを指すポインタを含み;この方法がさらにc)対応するデータポンプと現在のメモリバッファとの間でデータを転送するために、現在のメモリバッファを処理するステップを含み、このステップが:c1)処理すべきメモリバッファを、存在する場合、現在のメモリバッファのポインタに基づいて識別するサブステップ、およびc2)前記一つあるいは複数のデータポンプのデータを前記連結チェーンに対応する順番にて転送するサブステップから成ることを特徴とする方法。
【請求項9】 前記メモリバッファがデータ長値を含み、この方法がさらに対応するデータポンプのデータを前記メモリバッファ内に前記データ長値に従って充填するステップを含むことを特徴とする請求項8記載の方法。
【請求項10】 前記メモリバッファが、現在のメモリバッファが連結チェーンの最後のメモリバッファであるか否かを示す終端署名値を含み、この方法がさらに、連結チェーン内のメモリバッファの処理を前記終端署名値に基づいて終端するステップを含むことを特徴とする請求項8記載の方法。
【請求項11】 各データポンプが、内部データポンプメモリバッファおよび前記ステップc)において対応するメモリバッファが処理される際にデータを入り方向あるいは出方向に順番に転送するための前記バッファ内の位置を指す索引ポインタを含むことを特徴とする請求項8記載の方法。
【請求項12】 この方法が集積回路として実現される少なくとも一つのプロセッサを用いて実行されることを特徴とする請求項8記載の方法。
【請求項13】 この方法がモデムプール集信装置のプロセッサによって実行され、ステップc)において対応するデータポンプと現在のメモリバッファの間で転送されるデータがモデムデータから成ることを特徴とする請求項8記載の方法。
【請求項14】 内部に格納された複数のインストラクションを有するコンピュータにて読出し可能な媒体であって、前記複数のインストラクションが、プロセッサによって実行されたときプロセッサに対して一つあるいは複数のデータポンプに対するデータを転送するための方法を実行するように指令するインストラクションを含み、この方法がa)前記一つあるいは複数のデータポンプのアドレスのシーケンスに対応する連結チェーンを形成するステップ;およびb)各データポンプに対してメモリバッファを割当てるステップを含み、前記メモリバッファが1)前記対応するデータポンプのアドレス、および前記シーケンス内に複数のアドレスが存在する場合、2)前記シーケンス内の次のデータポンプのアドレスに対応するメモリバッファのアドレスを指すポインタを含み;前記方法がさらにc)対応するデータポンプと現在のメモリバッファとの間のデータの転送を行なうために現在のメモリバッファを処理するステップを含み、このステップが:c1)処理すべきメモリバッファを、存在する場合、現在のメモリバッファのポインタに基づいて識別するサブステップ、およびc2)前記一つあるいは複数のデータポンプのデータを前記連結チェーンに対応する順番にて転送するサブステップから成ることを特徴とするコンピュータにて読出し可能な媒体。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、信号処理に伴ってプロセッサとメモリ間で行なわれる複数のデータ流の転送を制御することに関する。
【0002】
【従来の技術】多くの信号処理アプリケーションにおいては、中央プロセッサの容量は、複数の異なるデータ発生器に割当てられる。例えば、モデム集信装置(バンク)においては、中央マイクロプロセッサは、複数のデータポンプとシステムメモリとの間で流れる制御およびデータ情報を管理する。データポンプ自身は、特定用途向け回路あるいはプロセッサから成り、各データポンプは、デジタル信号処理を遂行し、ユーザと通信網との間のデータ転送を、特定の形式のモデム伝送、例えば、V.90,V.34等に対して調整する。中央マイクロプロセッサは、データポンプの一つあるいは複数のレジスタ内の情報を読み出すことで、各データポンプの状態をポーリングする。この情報が、データポンプが処理(サービス)を必要とすることを示す場合は、中央マイクロプロセッサは、システムメモリと処理を必要とするデータポンプとの間のデータの転送を行なう。このようなデータの転送のためには、データバスを通じて多量のデータを転送する必要がある場合は、中央プロセッサのかなりの処理能力が必要とされる。中央マイクロプロセッサがデータの転送が必要となる度にデータ転送過程に直接に巻き込まれるために、マイクロプロセッサベースのシステム全体としての効率が中央マイクロプロセッサの処理能力(つまり、マイクロプロセッサの帯域幅)の多くの部分がデータ転送動作に対して使用されることで低下する。
【0003】
【発明が解決しようとする課題】従来の技術による幾つかのシステムは直接メモリアクセス(direct-memory access、DMA)コントローラを備える。DMAコントローラは、中央マイクロプロセッサに代ってデータの転送を管理する。こうして、中央マイクロプロセッサは様々なデータポンプとシステムメモリとの間のデータ転送を直接管理することから解放され、システム全体としての性能が改善される。中央マイクロプロセッサは、サービスを必要とする各データポンプからリクエストを受信し、これらリクエストの優先リストを作成する。中央マイクロプロセッサは、DMAコントローラを、このリストに基づいて特定のデータポンプとの間でデータを転送するようにプログラムする。リスト内のあるデータポンプの処理が終わると、中央マイクロプロセッサは、DMAコントローラをリスト内の次のデータポンプとの間でデータを転送するように再プログラムする。ただし、従来の方法では、中央マイクロプロセッサは、各サービスが終了する毎に、データポンプからの全てのリクエストが処理されるまで、DMAコントローラを何度も再プログラムすることを必要とされる。
【0004】
【課題を解決するための手段】本発明は、一つあるいは複数のデータポンプからのサービスリクエストを処理する直接メモリアクセス(DMA)コントローラに対する連結リストアドレス構造に関する。中央マイクロプロセッサによって、処理されるべきデータポンプのシーケンスに対応するアドレスのシーケンスが生成される。各データポンプに対して、データポンプのアドレスおよびシーケンス内の次のデータポンプに対応する次のシステムメモリバッファを指すポインタを含むシステムメモリバッファが生成される。直接メモリアクセス(DMA)コントローラおよびシステムメモリバッファの位置が、処理されるべき各データポンプのアドレスの連結チェーンがシステムメモリバッファ内に格納されたポインタ情報によって形成されるようなやり方にて、プログラムされる。処理されるべきデータポンプをアドレスする連結チェーンがいったん形成されると、中央プロセッサは、直接メモリアクセス(DMA)コントローラに対して、連結チェーン内の第一のデータポンプサービスに対するデータ転送を開始するように指令し、その後、中央プロセッサは他の処理タスクに戻る。この指令に応答して、直接メモリアクセス(DMA)コントローラが、チェーン内の各リンクに対して、システムメモリとデータポンプとの間のデータの転送を管理し、連結チェーンに対応する一つあるいは複数のデータポンプの処理が完了した時点で、中央プロセッサに対してその事実を伝える。
【0005】本発明の他の局面、特徴、および長所が、以下の詳細な説明を図面を参照しながら読むことで一層明らかになるものである。
【0006】
【発明の実施の形態】本発明によると、プロセッサシステムは、直接メモリアクセスコントローラ(DMAC)を介して一つあるいは複数のデータポンプからのリクエストを処理するために連結リスト構造を採用する。ここで開示される本発明の一つの実施例によるこのような直接メモリアクセスコントローラ(DMAC)は、連結リスト直接メモリアクセスコントローラ(linked-list direct memory-access controller、LLDMAC)と呼ばれる。データ転送動作のために要求される中央プロセッサの処理容量をLLDMAC(連結リスト直接メモリアクセスコントローラ)を用いて低減することで、プロセッサシステム全体としての性能が向上される。本発明の好ましい実施例によると、中央プロセッサは、定期的に、例えば、各データポンプ内の複合状態レジスタをポーリングすることで、どのデータポンプを処理すべきか(どのデータポンプにサービスを提供すべきか)を決定する。中央プロセッサは、各状態レジスタからの情報を用いて、LLDMACおよび各データポンプに割当てられたプロセッサシステム内のシステムメモリバッファの対応する位置を、処理(サービス)のためにプログラムする。中央プロセッサは、LLDMACおよびシステムメモリバッファの対応する位置を、各データポンプのアドレスを連結するサービス(処理)に対するチェーン("連結チェーン(linked chain)"と呼ばれる)が、対応するデータポンプに割当てられた(複数の)システムメモリバッファの間に格納されている情報にて形成されるようなやり方にてプログラムする。いったん、連結チェーンおよびシステムメモリバッファがプログラムされると、中央プロセッサは、LLDMACに対して、連結チェーンの第一のデータポンプサービス(処理)に対するデータ転送を開始するように指令した上で、他の処理タスクに戻る。LLDMACは、チェーン内の各リンクに対して、システムメモリとデータポンプとの間でデータを転送する。LLDMACは、チェーンの処理(サービス)が終了すると、割り込みあるいはレジスタ内の状態ビットを介して、この事実を中央プロセッサに示す。
【0007】以下では、本発明の一つの実施例が、マイクロプロセッサベースのモデム集信装置内で採用されるものとして説明されるが、ただし、本発明はこれに限られるものではない。本発明の方法は、データの転送を管理するための任意のシステム内で、中央プロセッサを様々なデータポンプとシステムメモリとの間のデータ伝送を直接管理することから解放し、システム全体としての効率あるいは性能を向上させるために、採用できるものである。加えて、以下の実施例は、マイクロプロセッサベースのプロセッサシステムとの関連で説明されるが、当業者においては理解できるように、マイクロプロセッサの使用は、単に一例であり、他のプロセッサ、例えば、マイクロコントローラ、デジタル信号プロセッサ、プログラマブル論理、あるいは他の特定用途向けデバイスを用いることもできる。これらプロセッサは、集積回路にて実現することも、他の形態にて実現することもできる。これらプロセッサは、本発明の様々な形態のある特定の形態を採用することができる。
【0008】図1は、マイクロプロセッサシステム101を採用するモデムプール集信装置100を示す。マイクロプロセッサシステム101は、LLDMAC102および中央マイクロプロセッサ103を含む。LLDMAC102を用いるマイクロプロセッサシステム101は、データポンプ111(1)〜111(N)、中央マイクロプロセッサ103、およびシステムRAM112およびROM113を含むシステムメモリの間のデータ転送を管理する。マイクロプロセッサシステム101、データポンプ111(1)〜111(N)、およびシステムRAM112およびROM113を含むシステムメモリは、システムメモリバス110に結合され、これを通じてデータを転送する。システムメモリバス110は、メモリアドレスを書き込んだり、読み出したりするアドレスバスと、データ値を書き込んだり、読み出したりするデータバスを含む。アドレスバスとデータバスは両方とも、時分割多重技術を用いて、物理的に同一のバス構造上に実現される。データ転送は、例えば、データポンプ111(1)〜111(N)によって調整および/あるいは処理される個々のモデムセッションと関連するデータから成る。マイクロプロセッサシステム101のアービタ104は、中央マイクロプロセッサ103とLLDMAC102との間でシステムメモリバス110を共有するために用いられる。高速インタフェース105は、マイクロプロセッサシステム101の中央マイクロプロセッサ103と外部源、例えば、中央交換機(図1には示されない)との間の通信およびデータの転送を管理する。
【0009】データポンプ111(1)〜111(N)によって調整および/あるいは処理される個々のモデムセッションは、例えば、ユーザと中央交換機との間のモデムデータの転送に対するもので有り得る。ユーザと中央交換機との間のモデムデータはモデムプール集信装置に、電気通信回線、例えば、T1あるいはE1回線を通じての信号として転送される。T1回線は、入り方向および出方向の各々に対して、各帯域幅(チャネル)が64キロビット/秒の24個のユーザチャネルを、時分割多重化して、1.544メガビット/秒のシリアルリンクを通じて運ぶ。E1回線は、各方向に対して、各チャネルが64キロビット/秒の30個のユーザチャネルを、時分割多重化して、2.048メガビット/秒のシリアルリンクを通じて運ぶ。タイムスロットインタチェンジャ121は、アクティブなモデムチャネルのパルス符号変調(PCM)サンプルを、一つあるいは複数のT1および/あるいはE1回線とデータポンプ111(1)〜111(N)との間で、空いている場合、8.192メガビット/秒にて動作する128-スロット時分割多重(TDM)バス120上の対応するスロットを用いて転送する。データポンプ111(1)〜111(N)の各々は、モデムセッションが開始される度に、TDMバス上の一つのタイムスロットを動的に割当てられる。タイムスロットは、モデムセッションが切断されると解放され、別のモデムセッションが開始されると別のデータポンプに割当てられる。アクティブなデータポンプに対応するデータは中央マイクロプロセッサ103によって処理され、処理されたデータは、中央交換機との間で、高速データインタフェース105を通じてやりとりされる。
【0010】説明の実施例においては、データポンプは、回路交換網内のT1あるいはE1電気通信回線とインタフェースし、モデムデータを処理するものとして説明される。ただし、当業者においては明らかなように、データポンプ111(1)〜111(N)は、他の形式のデータ、例えば、音声、音声バンド、あるいは専用デジタルデータを調整および処理することも、あるいは、これらデータを、例えば、パケット(フレームあるいはセルリレー)あるいは他のタイプの仮想回路網から受信することも考えられる。加えて、本発明の方法は、他のタイプの標準インタフェース(例えば、SONET)をサポートする他のタイプの通信回線、例えば、有線、無線、あるいは光通信回線との関連で用いることもできる。
【0011】一例としてのモデムプール集信装置100の場合、中央マイクロプロセッサ103のデータバスの帯域幅およびアドレスバスの帯域幅は32ビットとされ、中央マイクロプロセッサ103は、8-、16-、および/あるいは32-ビットメモリ転送動作を遂行する。データポンプ111(1)〜111(N)は、16-ビット周辺装置から成り、データポンプ111(1)〜111(N)は、入りデータ方向(例えば、ユーザから交換機への方向)および出データ方向(例えば、交換機からユーザへの方向)の両方向に転送される処理されたデータを格納するために索引付メモリバッファを用いるが、以下にこれら索引付メモリバッファの動作について簡単に説明する。
【0012】中央マイクロプロセッサ103は、システムROM113、システムRAM112、およびデータポンプ111(1)〜111(N)にアドレスを割当てる。各データポンプ111(1)〜111(N)には、2つのアドレス、つまり、特定のデータポンプにアドレスするために用いられる第一のデータポンプアドレスと、対応するデータポンプのシステムメモリとの間でやりとりされるデータにアドレスするために用いられる第二のデータポンプアドレスが割当てられる。中央マイクロプロセッサ103は、データがデータポンプから中央交換機に転送されるのか(読出信号の場合)、あるいはデータが中央交換機からデータポンプに転送されるのか(書込信号の場合)を制御するために、読出/書込(R/W)信号を生成する。加えて、中央マイクロプロセッサ103は、一つあるいは複数のデータポンプ111(1)〜111(N)をポーリングし、あるいはこれらからサービスを求めるリクエストを受信し、処理すべき一つあるいは複数のデータポンプ111(1)〜111(N)の各々に対応するシステムメモリバッファを割当てる。
【0013】本発明によるアドレシングスキームの一例においては、データポンプ111(1)は、システムメモリ内のDPADD(1)の所から始まるアドレスに対応する第一のデータポンプアドレスおよび第二のデータポンプアドレス:DPADD(1)およびDPADD((1)+2)を持つメモリ空間を用いる。メモリ空間とは、全ての利用可能でアドレス可能なメモリを指し、これには、システムRAM112、システムROM113、データポンプ111(1)〜111(N)内のメモリバッファ、並びに、マイクロプロセッサシステム101内の内部メモリ(図示せず)も含まれる。LLDMAC102は、システムRAM112からの処理されたデータをデータポンプ111(1)のメモリバッファに書き込むためには(出データ方向)、データポンプ111(1)内のメモリバッファの16-ビットアドレスを初期化し、データバス上の第一のデータポンプアドレスDPADD(1)を駆動し、データポンプ111(1)のメモリバッファに対する開始アドレスに対応する値をデータバスに書き込む。次に、LLDMAC102は、アドレスバス上の第二のデータポンプアドレスDPADD((1)+2)を駆動し、アドレスDPADD((1)+2)に向かうデータバス上に一連のデータ値を書き込む。説明の実施例においては、16-ビット周辺装置に対しては、アドレスバスのLSBは必ずしも用いる必要はない。
【0014】各データポンプ111(1)〜111(N)は、データポンプのメモリバッファに対する開始アドレスを指すように初期化された索引レジスタポインタを含む。索引レジスタポインタは、中央マイクロプロセッサ103によってデータ値がアドレスDPADD((1)+2)に書き込まれる度に、データポンプ111(1)内のメモリバッファの16−ビットアドレスだけ自動的に増分され、こうして、データ値がデータポンプのメモリバッファの連続位置内に格納される。同様にして、LLDMAC102がデータポンプ111(1)のメモリバッファを読み出す度に(入りデータ方向)、逆の動作が行なわれる。最初に、データポンプ111(1)内のメモリバッファの16-ビットアドレスが、アドレス値をDPADD(1)の所に書き込むことで初期化される。次に、LLDAMC102は、データポンプ111(1)によってデータバスに書き込まれたアドレスDPADD((1)+2)から一連のデータ値をシステムメモリバッファ内に読み込む。データポンプ111(1)は、読出動作の際に、データバス上に読み出されるべきメモリバッファの連続位置内のデータ値を、書込動作の場合と同様に索引レジスタポインタを用いてポイントする。
【0015】LLDAMC102は、中央マイクロプロセッサ103とデータポンプ111(1)〜111(N)のアクティブな一つとの間で転送されるデータのために、システムRAM112内あるいはマイクロプロセッサシステム101内の別個のシステムメモリデータバッファを用いる。読出ポインタと書込ポインタが、中央マイクロプロセッサ103とLLDMAC102によって、データとシステムメモリバッファにアドレスし、これらの間でデータをやりとりするために用いられる。
【0016】出方向データに対しては、中央マイクロプロセッサ103によってデータを各システムメモリバッファに詰め込むためのポインタと、LLDAMC102によってデータを取り出すためのポインタの2つのポインタが維持される。出方向データに対しては、中央マイクロプロセッサ103は対応するデータポンプに対するデータを処理し、これをこれら別個のシステムメモリデータバッファ内に格納する。各システムメモリバッファは以下のように循環的に用いられる。つまり、中央マイクロプロセッサ103は、データを連続位置に格納し、LLDMAC102は、これら位置からデータを検索し、前述のように、データを個々のデータポンプ内のメモリバッファに転送する。入り方向データに対しても類似の動作が行なわれる。出方向データに対しては、中央マイクロプロセッサ103は、書込ポインタを用い、および、これを更新する。LLDMAC102も対応するポインタを用いるが、LLDMAC102は出方向データに対しては読出ポインタを用いる。LLDMAC102の出方向データに対する読出ポインタは、中央マイクロプロセッサ103がデータポンプ111(1)〜111(N)の対応する一つに対してシステムメモリバッファをセットアップする際に、中央マイクロプロセッサ103によって初期化される。通常の動作においては、LLDMAC102の読出ポインタは、出方向データに対しては、中央マイクロプロセッサ103の書込ポインタを追跡する。両方のポインタともに循環方式とされる(つまり、各ポインタは、システムメモリバッファの終端位置に到達すると、開始位置にラップアラウンドする)。
【0017】入り方向データに対しては、中央マイクロプロセッサ103は、対応するデータポンプ111(1)〜111(N)からのデータを、同様なやり方で循環的なシステムメモリバッファを用いて処理する。LLDMAC102は、データをシステムメモリバッファの連続位置に格納し、中央マイクロプロセッサ103は、処理のためにデータをこれら位置から取り出す。書込ポインタがLLDMAC102によって使用および更新され、読出ポインタが中央マイクロプロセッサ103によって使用および更新される。入り方向データに対するLLDMAC102の書込ポインタは、中央マイクロプロセッサ103によって、中央マイクロプロセッサ103がデータポンプ111(1)〜111(N)の対応する一つに対してシステムメモリバッファを設定する際に、中央マイクロプロセッサ103によって初期化される。通常の動作においては、中央マイクロプロセッサ103の読出ポインタは、出方向データのデータ転送の場合と類似のやり方にて、LLDMAC102の書込ポインタを追跡する。出方向データの場合と同様に、両方のポインタとも、システムメモリバッファの終端位置に達すると開始アドレスにラップアラウンドする。
【0018】LLDMAC102は、各データポンプ111(1)〜111(N)と関連する情報を用いる。この情報は、図2に示すように配列された以下のパラメータ、つまり:現在のLLDMACポインタ(Current LLDMAC Pointer)、チェーン内の次のバッファに対するポインタ(Pointer to the Next Buffer in the Chain)、データポンプアドレス(Data Pump Address)、データポンプメモリバッファポインタ(Data Pump Memory Buffer Pointer)、バッファサイズ(Buffer Size)、転送カウント(Transfer Count)、および終端署名(End Signature)、から構成される。中央マイクロプロセッサ103は、各データポンプおよび各方向に対して、一つのシステムメモリバッファを割当て、各システムメモリバッファの開始の所にこれらパラメータが格納される。
【0019】図2は、格納されたパラメータを含むシステムメモリバッファ200に対する一例としてのメモリ構造を示す。システムメモリバッファ200は、高々6553616個の16-ビット語のサイズをもつ。情報を表すデータ語は、8-、16-、あるいは32-ビット語のいずれとすることもできるが、ただし、改めて示されない限り、32-ビット語であるものと想定される。第一のデータ語201は、LLDMAC1 02によって用いられるシステムメモリバッファに対する現在のポインタを表し、このパラメータは、"現在のLLDMACポインタ(Current LLDMAC Pointer)"として定義される。第二のデータ語202は、連結チェーン内の次のシステムメモリバッファに対するポインタを表し、システムメモリバッファの開始をポイントし、このパラメータは、"チェーン内の次のバッファに対するポインタ(Pointer to theNext Buffer in the Chain)"として定義される。第三のデータ語203は、このシステムメモリバッファに対応するデータポンプに対する第一のデータポンプアドレスを格納するために用いられ、このパラメータは、"データポンプアドレス(Data Pump Address)"として定義される。第二のデータポンプアドレスは、所定のオフセットが用いられる場合は、第一のデータポンプアドレスから導くことができる。ここに説明される一例としての実施例においては、第一と第二のデータポンプアドレスの間のこのオフセットは、データポンプアドレスが16ビット長とされるために、2とされる。
【0020】第四のデータ語204は、データポンプ内のメモリバッファに対するポインタを表し、このパラメータは、"データポンプメモリバッファポインタ(Data PumpMemory Buffer Pointer)"として定義される。第五のデータ語内の情報は、以下のように3つの欄によって表される。第一の欄205は、システムメモリバッファのサイズを表す16-ビットデータ語から成り、このパラメータは、"バッファサイズ(Buffer Size)"として定義される。第二の欄206は、8-ビットデータから成り、データ転送数を表し、このパラメータは、"転送カウント(TransferCount)"として定義される。第三の欄207は、8-ビットデータ語から成る終端署名であり、そのシステムメモリバッファが連結チェーン内の最後のバッファであるか否かを示し、このパラメータは、"終端署名(End Signature)"として定義される。例えば、00Hなる16進値は、連結チェーンの開始および中央の所のシステムメモリバッファを表し、FFHなる値は最後のリンクを表す。第六のデータ語208は、中央マイクロプロセッサ103の現在のポインタ値を示す。中央マイクロプロセッサ103は、システムメモリバッファからのデータを処理した後に、この値を更新する。格納データ209は、第七の語以降から始まる。説明の実施例においては、データに対する有効格納領域は約(バッファサイズ−12)16-ビット語バイトとされる(各32-ビットデータ語は2つの16-ビット語から成る)。中央マイクロプロセッサ103は、LLDMAC102によるデータ転送の開始の前に、各システムメモリバッファの最初の6語を初期化する。
【0021】図3は、本発明の一つの実施例において採用される4つのシステムメモリバッファ200(1)〜200(4)の連結チェーンの一例を示す。データポンプ1に対応するシステムメモリバッファ200(1)が処理され(サービスされ)、次に、システムメモリバッファ200(1)の"次のバッファに対するポインタ"の値を用いて、次のシステムメモリバッファ200(2)が、サービスに対してセットされる。データポンプ4に対応するシステムメモリバッファ200(2)が処理され、次に、システムメモリバッファ200(2)の"次のバ ッファに対するポインタ"の値を用いて、次のシステムメモリバッファ200(3)が、サービスに対してセットされる。データポンプ2に対応するシステムメモリバッファ200(3)が処理され、次に、システムメモリバッファ200(3)の"次のバ ッファに対するポインタ"の値を用いて、次の、そして最後の、システムメモリバッファ200(4)が、サービスに対してセットされる。次に、データポンプ3に対応するシステムメモリバッファ200(4)が処理される。
【0022】連結チェーン内の最後のシステムメモリバッファ、すなわち、システムメモリバッファ(4)は、第五の語である終端署名欄207内にFFHなる値を持ち、これによって、このシステムメモリバッファが連結チェーン内の最後のメモリバッファであることをマークする。加えて、システムメモリバッファ200(4)の場合は、連結チェーン内の次のシステムメモリバッファに対するポインタを表す第二の語はナルにセットされる。システムメモリバッファ200(1)〜200(3)は、対応する終端署名欄内に00Hなる値を持つ。第一のシステムメモリバッファ200(1)に対するポインタが、マイクロプロセッサによって、LLDMAC102の対応する専用のレジスタ内にセットされる。この専用のレジスタは、出方向データを転送するときは、現在のシステムメモリバッファに対するポインタを格納するための出方向バッファポインタレジスタ(outbound buffer pointerregister、OBPR)を表し、入り方向データを転送するときは、現在のシステムメモリバッファに対するポインタを格納するための入り方向バッファポインタレジスタ(inbound buffer pointer register、IBPR)を表す。
【0023】マイクロプロセッサシステム101は7個の一時レジスタを含み、これらが対応するシステムメモリバッファのパラメータを一時的に保持するために用いられる。これら7個の一時レジスタは、以下のパラメータ、すなわち、現在のLLDMACポインタ、チェーン内の次のバッファに対するポインタ、データポンプアドレス、データポンプメモリバッファポインタ、バッファサイズ、転送カウント、および終端署名を格納する。一時レジスタ内の終端署名の値は、最初は、00Hにセットされ、転送カウントを保持する一時レジスタは、1なる値だけ減分される(例えば、ダウンカウンタとして実現される)。
【0024】図4は、本発明の一つの実施例による出方向データに対するデータ転送過程の流れ図を示す。サービスをリクエストする一つあるいは複数のデータポンプ111(1)〜111(N)へのデータの転送が、例えば、中央マイクロプロセッサ103(図1)によって、ステップ401において、開始される。ステップ401において、中央マイクロプロセッサ103は、出方向バッファポインタレジスタ(OBPR)の値を、連結チェーン内の最初のシステムメモリバッファのアドレスに対応するポインタ値にセットし、LLDMAC102に対して開始コマンドを発行する。ステップ402において、LLDMAC102によって、(そのアドレスがOBPR内の値によってポイントされる)処理されるべき対応するデータポンプと関連するシステムメモリバッファに対するパラメータが対応する一時レジスタ内にロードされる。
【0025】ステップ403において、データポンプメモリバッファアドレスおよびデータポンプアドレスの対応する値(つまり、最初のデータポンプアドレス)を格納する一時レジスタの内容が、LLDMAC102によって、システムメモリバス110に書き込まれる。上述のように、この過程は、第一のデータポンプアドレス(つまり、一時レジスタ内に格納されているデータポンプアドレスの値)をアドレスバス上に置き、データポンプ111(1)〜111(N)の対応する一つが自身が処理されていることを認識できるようにする動作を伴う。この過程の後に、データポンプ内のメモリバッファに対するデータポンプのポインタ(つまり、一時レジスタ内に格納されているデータポンプメモリバッファポインタの値)がデータバス上に書き込まれる。
【0026】ステップ404において、データポンプアドレスの値を格納する一時レジスタ(データポンプアドレス(DPA)保持レジスタと呼ばれる)が2なる値だけ増分され、これによってこの値が第二のデータポンプアドレスに変換され、現在のLLDMACポインタの値によってアドレスされる現在のシステムメモリバッファの位置からの16-ビットデータ値がデータ用の一時レジスタ("データレジスタ")内にロードされる。ステップ405において、現在のLLDMACポインタの値がシステムメモリバッファの終端アドレスと比較される。ステップ405において比較された値が等しい場合は、ステップ406において、一時レジスタ内の現在のLLDMACポインタの値が、データ領域の最初のアドレスあるいは開始(例えば、OBPR+12に対応するシステムメモリバッファの欄)をポイントする値にリセットされる。ステップ405において比較された値が等しくない場合は、ステップ407において、一時レジスタ内の現在のLLDMACポインタの値が次のデータ値に対する位置をポイントするように2だけ増分される。この過程は、ステップ406もしくはステップ407からステップ408に進む。
【0027】ステップ408において、データレジスタの内容が、DPA保持レジスタ内の値によってポイントされるデータポンプアドレス+2(Data Pump Address + 2)の位置内に書き込まれる。ステップ409において、転送カウントの値を保持する一時レジスタが1だけ減分される。ステップ410において、一時保持レジスタ内の転送カウントの値が零であるか否かを決定するテストが行なわれる。ステップ410のテストにおいて、一時保持レジスタ内の転送カウントの値が零でないことが決定された場合は、この過程はステップ404に戻り、現在のシステムメモリバッファの次のデータ値がロードされる。ステップ410のテストにおいて、一時保持レジスタ内の転送カウントの値が零であることが決定された場合は、ステップ411において、終端署名の値がFFHであるか否か決定するテストが行なわれる。ステップ411のテストにおいて、このシステムメモリバッファに対する終端署名の値がFFHであることが決定された場合は、ステップ412において、現在のLLDMACポインタの値が更新される。現在のLLDMACポインタの更新は、一時レジスタからの値をシステムメモリバッファの最初の語内にローディングする動作を伴う。この過程は、ステップ415において終端するが、ただし、ステップ415の前もしくは後に、オプションとしてステップ416を設け、中央マイクロプロセッサ103に割り込み、この過程が完了したことを示すこともできる。
【0028】ステップ411のテストにおいて終端署名の値がFFHでないことが決定された場合は、ステップ413において、保持レジスタからの現在のLLDMACポインタの値がシステムメモリバッファの最初の語内に書き込まれる。次に、ステップ414において、チェーン内の次のバッファに対するポインタの値が、対応する一時レジスタから出方向バッファポインタレジスタ(OBPR)内にロードされる。続いて、連結チェーン内の次のシステムメモリバッファ(つまり、処理すべき次のデータポンプ)がOBPR内に格納されるアドレス値によってポイントされ、この過程はステップ402に戻る。この過程が、終端署名欄のFFHなる値によって最後のデータバッファに到達したことが示されるまで反復される。
【0029】図5は、本発明の一つの実施例による入り方向データに対するデータ転送過程の流れ図を示す。サービスをリクエストする一つあるいは複数のデータポンプ111(1)〜111(N)からのデータの転送が、例えば、中央マイクロプロセッサ103(図1)によって、ステップ501において、開始される。ステップ501において、中央マイクロプロセッサ103は、入り方向バッファポインタレジスタ(IBPR)の値を、連結チェーン内の最初のシステムメモリバッファのアドレスに対応するポインタ値にセットし、LLDMAC102に対して開始コマンドを発行する。ステップ502において、LLDMAC102によって、(そのアドレスがIBPR内の値によってポイントされる)処理されるべき対応するデータポンプと関連するシステムメモリバッファに対するパラメータが対応する一時レジスタ内にロードされる。
【0030】ステップ503において、データポンプメモリバッファアドレスおよびデータポンプアドレスの対応する値(つまり、最初のデータポンプアドレス)を格納する一時レジスタの内容が、LLDMAC102によって、システムメモリバス110に書き込まれる。上述のように、この過程は、第一のデータポンプアドレス(つまり、データポンプアドレスの値)をアドレスバス上に置き、データポンプ111(1)〜111(N)の対応する一つが自身が処理されていることを認識できるようにする動作、およびデータポンプ内のメモリバッファに対するポインタの値(つまり、データポンプメモリバッファポインタの値)をデータバス上に書き込む動作を伴う。
【0031】ステップ504において、データポンプアドレスの値を格納する一時レジスタ(データポンプアドレス(DPA)保持レジスタと呼ばれる)が、2なる値だけ増分され、これによって、この値が第二のデータポンプアドレスに変換され、データポンプアドレス(DPA)の増分された値によってアドレスされるデータバスからの16-ビットデータ値がデータ用の一時レジスタ("データレジスタ")内にロードされる。ステップ505において、データレジスタ内の16-ビットデータ値が現在のLLDMACポインタによってアドレスされる現在のシステムメモリバッファ位置内に書き込まれる。ステップ506において、現在のLLDMACポインタの値がデータバッファの終端アドレスと比較される。ステップ506において比較された値が等しい場合は、ステップ507において、一時レジスタ内の現在のLLDMACポインタの値がデータ領域の最初のアドレスあるいは開始(例えば、IBPR+12に対応するシステムメモリバッファの欄)をポイントする値にリセットされる。ステップ506において比較された値が等しくない場合は、ステップ508において、一時レジスタ内の現在のLLDMACポインタの値が現在のシステムメモリバッファの次のデータ値の位置をポイントするように2だけ増分される。この過程は、ステップ507もしくはステップ508からステップ509に進む。
【0032】ステップ509において、転送カウントの値を保持する一時レジスタが1だけ減分される。ステップ510において、一時保持レジスタ内の転送カウントの値が零であるか否かを決定するテストが行なわれる。ステップ510のテストにおいて、一時保持レジスタ内の転送カウントの値が零でないことが決定された場合は、この過程はステップ504に戻り、次のデータ値をデータレジスタ内に読み込む。ステップ510のテストにおいて、一時保持レジスタ内の転送カウントの値が零であることが決定された場合は、ステップ511において、終端署名の値がFFHであるか否か決定するテストが行なわれる。ステップ511のテストにおいて、このシステムメモリバッファに対する終端署名の値がFFHであることが決定された場合は、ステップ512において、現在のLLDMACポインタの値が更新される。現在のLLDMACポインタの更新は、一時レジスタからの値をシステムメモリバッファの最初の語内にローディングする動作を伴う。この過程は、ステップ515において終端するが、ただし、ステップ515の前もしくは後に、オプションとして、ステップ516を設け、中央マイクロプロセッサ103に割り込み、この過程が完了したことを示すこともできる。
【0033】ステップ511のテストにおいて終端署名の値がFFHでないことが決定された場合は、ステップ513において、保持レジスタからの現在のLLDMACポインタの値がシステムメモリバッファの最初の語内に書き込まれる。次に、ステップ514において、チェーン内の次のバッファに対するポインタの値が、対応する一時レジスタから入り方向バッファポイン タレジスタ(IBPR)内にロードされる。続いて、連結チェーン内の次のシステムメモリバッファ(つまり、処理されるべき次のデータポンプ)がIBPR内に格納されるアドレス値によってポイントされ、この過程はステップ502に戻る。この過程が、終端署名欄のFFHなる値によって最後のデータバッファに到達したことが示されるまで反復される。
【0034】本発明の実施例によると、マイクロプロセッサシステムの全体としての処理性能が、複数のデータ流、例えば、モデムプール構成におけるデータ流に対する典型的な転送と関連する中央マイクロプロセッサの動作を解放することで、向上される。加えて、この連結チェーンはサービスを必要とするデータポンプのみに対応するシステムメモリバッファを動的に連結することを可能とし、この動的リンクの形成のためにシステム拡張をより柔軟に行なうことが可能となる。
【0035】上では本発明の幾つかの実施例が回路の過程との関連で説明されたが、本発明はこれに制限されるものではない。当業者においては明らかなように、回路素子の様々な機能は、ソフトウエアプログラムにて、デジタル領域における処理ステップとして実現することもでき、これらソフトウエアは、例えば、デジタル信号プロセッサ、マイクロコントローラ、あるいは汎用コンピュータのいずれに実装することもできる。
【0036】本発明は、方法およびこれら方法を実行する装置の形式にて実施される。本発明は、さらに、有形媒体、例えば、フロッピー(登録商標)ディスク、CD−ROM、ハードドライブ、あるいは任意の他のマシーンにて読出し可能な記憶媒体内に実装され、マシーン、例えば、コンピュータ内にロードされ、マシーン内で実行されたとき、マシーンが本発明を実行する装置となるようなプログラムコードの形式にて実現することもできる。本発明をプログラムコードの形式にて実現する場合でも、プログラムコードを、記憶媒体に格納し、直接にマシーン内にロードし、これを実行することも、あるいは、ある伝送媒体、例えば、電線あるいはケーブルを通じて、あるいは光ファイバを通じて、もしくは電磁放射を介して伝送した上で、これをマシーン、例えばコンピュータにロードし、実行することも考えられる。汎用プロセッサ上で実現される場合は、プログラムコードセグメントがプロセッサと相互作用し、これによって特定用途向け回路と類似に動作するユニークなデバイスが提供される。
【0037】さらに、当業者においては、本発明の本質を示すために上で説明された細部、材料、およびパーツの配列に対する様々な変更が本発明の原理および範囲から逸脱することなく可能であり、本発明はクレームによってのみ制限されるものである。
【出願人】 【識別番号】301030605
【氏名又は名称】アギア システムズ ガーディアン コーポレーション
【氏名又は名称原語表記】Agere Systems Guardian Corporation
【出願日】 平成13年6月22日(2001.6.22)
【代理人】 【識別番号】100064447
【弁理士】
【氏名又は名称】岡部 正夫 (外11名)
【公開番号】 特開2002−108800(P2002−108800A)
【公開日】 平成14年4月12日(2002.4.12)
【出願番号】 特願2001−189406(P2001−189406)