JPH08235102A - Dma controller with mechanism for designation of substitute device stream and memory space in dma transfer period - Google Patents

Dma controller with mechanism for designation of substitute device stream and memory space in dma transfer period

Info

Publication number
JPH08235102A
JPH08235102A JP29867995A JP29867995A JPH08235102A JP H08235102 A JPH08235102 A JP H08235102A JP 29867995 A JP29867995 A JP 29867995A JP 29867995 A JP29867995 A JP 29867995A JP H08235102 A JPH08235102 A JP H08235102A
Authority
JP
Japan
Prior art keywords
command
register
data
bit
channel
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.)
Withdrawn
Application number
JP29867995A
Other languages
Japanese (ja)
Inventor
M Christiansen Kevin
エム. クリスチャンセン ケビン
V James David
ヴイ. ジェイムス デイヴィッド
E Eckstine Bruce
イー. エクスタイン ブルース
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer Inc
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 Apple Computer Inc filed Critical Apple Computer Inc
Publication of JPH08235102A publication Critical patent/JPH08235102A/en
Withdrawn legal-status Critical Current

Links

Landscapes

  • Bus Control (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide a system and method for designating a substitute data stream and memory address space during a DMA transferring period. SOLUTION: The key field of a channel command is constituted so that the use of a substitute data port instead of a standard data stream can be designated. The data port can be formed in an unaddressed substitute data stream, such as the control/status steam, etc., or in another addressable space, such as the system memory, input-output address space, channel register space, etc. When a second addressable space is designated, another channel register is used for storing secondary addresses.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【発明の属する技術分野】本発明は、一般的には、ダイ
レクト・メモリ・アクセス(direct memory access - DM
A)コントローラに関し、さらに具体的には、DMA転送
期間に代替デバイス・ストリームとメモリ・スペースを
指定するためのメカニズムを備えたDMAコントローラ
に関する。
FIELD OF THE INVENTION This invention generally relates to direct memory access-DM.
A) The present invention relates to a controller, and more specifically to a DMA controller having a mechanism for designating an alternative device stream and a memory space during a DMA transfer period.

【0002】なお、本明細書の記述は本件出願の優先権
の基礎たる米国特許出願第08/340,249号(1
994年11月16日出願)の明細書の記載に基づくも
のであって、当該米国特許出願の番号を参照することに
よって当該米国特許出願の明細書の記載内容が本明細書
の一部分を構成するものとする。
The description of the present specification is based on the priority of the present application, US Patent Application No. 08 / 340,249 (1).
(November 16, 1994), and the description of the specification of the US patent application constitutes a part of the present specification by referring to the number of the US patent application. I shall.

【0003】[0003]

【従来の技術】DMAは、パーソナル・コンピュータ、
ミニコンピュータ、およびメインフレーム・コンピュー
タ上で入出力(I/O)を行うための共通方法である。
これにより、ホスト・プロセッサによってデータがバッ
ファにセットアップされているメモリをアクセスするこ
とができる独立のDMAコントローラを使用して、プロ
セッサが介入することなく、データを大きなブロック単
位で転送することができる。あるインプリメンテーショ
ンでは、DMAコントローラは、ホスト・プロセッサに
よってメモリ内にセットアップされている1つまたは複
数のプログラムによって制御することも可能である。メ
モリへのアクセスは、CPUからバス・サイクルを「ス
チール(stealing)」することによってバスを通して行わ
れる。
2. Description of the Related Art DMA is a personal computer,
It is a common method for input / output (I / O) on minicomputers and mainframe computers.
This allows data to be transferred in large blocks without processor intervention, using an independent DMA controller that can access the memory where the data is set up in buffers by the host processor. In some implementations, the DMA controller may also be controlled by one or more programs set up in memory by the host processor. Access to the memory is done through the bus by "stealing" the bus cycle from the CPU.

【0004】DMAコントローラは1つまたは複数のチ
ャネルを含んでいる場合があり、その場合、各チャネル
は独自のプログラムを実行し、一度に1つの入出力デバ
イスを扱っている。
A DMA controller may include one or more channels, where each channel executes its own program and handles one I / O device at a time.

【0005】[0005]

【発明が解決しようとする課題】従来公知のチャネルが
扱うことができるデータ・ストリームは1つだけであっ
た。入出力デバイスによっては、標準データ・ストリー
ムとステータス・データ・ストリームといったように、
2つ以上のデータ・ストリームをもっているものもあ
る。さらに、あるシステム・メモリ・バッファから別の
バッファへ、あるいはシステム・メモリから別のアドレ
ス空間へデータを転送する必要も時々起こっている。こ
れらのオペレーションがプロセッサの介入なしで実行で
きれば、ホスト・プロセッサのパフォーマンスは向上す
るはずである。代替アドレス空間をキー・フィールドで
指定する理由を1つ挙げると、それは、入出力デバイス
が別のアドレス空間にポートとして存在することがあり
得るからである。
Conventionally known channels can handle only one data stream. Depending on the I / O device, such as standard data stream and status data stream,
Some have more than one data stream. In addition, there is sometimes a need to transfer data from one system memory buffer to another, or from system memory to another address space. If these operations could be performed without processor intervention, the performance of the host processor should improve. One reason for specifying an alternate address space in the key field is that an I / O device can exist as a port in another address space.

【0006】従って、本発明の目的は、入出力デバイス
の2つ以上のデータ・ストリームを扱うことができるチ
ャネルを備えたDMAコントローラを提供することであ
る。
Therefore, it is an object of the present invention to provide a DMA controller with a channel that can handle more than one data stream of an I / O device.

【0007】本発明のその他の目的と利点は以下の説明
の中で明らかにする。その一部は説明を読むことにより
理解されるが、本発明を実施することで知る場合もあ
る。また、本発明の目的と利点は、請求項に具体的に列
挙されている手段とその組合せを通して実現し得ること
が可能である。
Other objects and advantages of the present invention will be clarified in the following description. Some will be understood by reading the description, but others may be known by practicing the invention. Further, the objects and advantages of the present invention can be realized through the means and combinations specifically listed in the claims.

【0008】[0008]

【課題を解決するための手段】本発明は、少なくとも1
つのチャネルを備えたDMAコントローラを目的として
いる。チャネルは、キー・フィールドを有する少なくと
も1つのコマンド・バッファと、キー・フィールドのビ
ットに応答して、少なくともその1つがデータ・ストリ
ームである複数のデータ・ソースまたはデスティネーシ
ョンの1つを選択する手段とを含んでいる。
SUMMARY OF THE INVENTION The present invention comprises at least one
It is intended for a DMA controller with one channel. A channel includes at least one command buffer having a key field and means for selecting one of a plurality of data sources or destinations, at least one of which is a data stream, in response to a bit of the key field. Includes and.

【0009】本発明の方法はキー・フィールドを有する
コマンドをフェッチするステップと、システム・メモリ
と少なくともその1つがデータ・ストリームである複数
のデータ・ソースまたはデスティネーションの1つとの
間でデータを転送することによってコマンドを実行する
ステップとを含んでいる。
The method of the present invention involves fetching a command having a key field and transferring data between system memory and one of a plurality of data sources or destinations, at least one of which is a data stream. Executing the command by executing.

【0010】[0010]

【発明の実施の形態】本明細書の一部を構成するものと
して添付された図面は本発明の好適実施例を図式化して
示しているが、これらの図面は、上述した概要説明と以
下に詳述する本発明の好適実施例の説明と共に、本発明
の原理を理解するのに役立つことを目的としている。
BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings, which form a part of this specification, schematically show preferred embodiments of the present invention, which are referred to as the above general description and the following. Together with the detailed description of the preferred embodiments of the invention, it is intended to be helpful in understanding the principles of the invention.

【0011】以下、好適実施例を示して本発明を説明す
る。ここでいう好適実施例とは、記述子(descriptor)ベ
ースのDMAコントローラとそのオペレーション(動
作)のための方法である。ここでいう記述子とは、DM
Aコマンド・リスト要素のことであり、これらは単にバ
ッファ記述子 (buffer descriptor)と呼ばれる場合もあ
る。DMAという用語は、相対的に高度のプロセッサ(i
nitiator:イニシエータと呼ばれる)から出された相対
的に単純なステート・マシン(ターゲットと呼ばれる)
処理コマンドによってデータ転送が行われることを意味
する。このようなDMAコントローラを利用したシステ
ム30は図1に示されている。
The present invention will be described below with reference to preferred embodiments. The preferred embodiment herein is a descriptor-based DMA controller and method for its operation. The descriptor here is DM
A command list element, sometimes referred to simply as a buffer descriptor. The term DMA refers to a relatively sophisticated processor (i
nitiator: A relatively simple state machine (called the target) that originates from the initiator
This means that data transfer is performed by a processing command. A system 30 utilizing such a DMA controller is shown in FIG.

【0012】システム30は、イニシエータまたはホス
ト・プロセッサ32、メモリ34、ターゲットまたはD
MAコントローラ36、およびディスク・コントローラ
やネットワーク・インタフェースなどの入出力(I/
O)デバイス38を含んでいる。オペレーションはイニ
シエータ32によって開始されるが、これはコマンドを
生成するインテリジェンスをもつコンポーネントであ
る。代表的なDMAオペレーションでは、イニシエータ
は、矢印42で示すように、新しいコマンド記述子リス
ト40を生成し、場合により、すでにメモリに入ってい
る既存のコマンド・リストにこれらの記述子を追加する
こともある。コマンド記述子は、矢印48と50で示す
ように、バッファ44と46のように、入出力デバイス
へのおよび、からのデータを収めているデータ・バッフ
ァを参照することができる。バッファは、矢印52で示
すようにホスト・プロセッサ32によっても使用され
る。
The system 30 includes an initiator or host processor 32, a memory 34, a target or D
Input / output (I / I) of MA controller 36 and disk controller, network interface
O) Includes device 38. The operation is initiated by the initiator 32, which is an intelligent component that produces commands. In a typical DMA operation, the initiator creates a new command descriptor list 40, as indicated by arrow 42, and possibly adds these descriptors to an existing command list already in memory. There is also. The command descriptor may refer to a data buffer containing data to and from the I / O device, such as buffers 44 and 46, as indicated by arrows 48 and 50. The buffer is also used by the host processor 32 as indicated by arrow 52.

【0013】ホスト・プロセッサ32は、矢印54で示
すようにWAKEUP信号をDMAコントローラ36へ送信す
る。このWAKEUP信号は、最近に付加されたコマンドをD
MAコントローラが処理することを開始させる。WAKEUP
信号を受信すると、DMAコントローラは、矢印56で
示すように、新しいコマンドを読み取って、そのコマン
ドを実行する。
The host processor 32 sends a WAKEUP signal to the DMA controller 36 as indicated by arrow 54. This WAKEUP signal is used to send the command added recently.
The MA controller begins processing. WAKEUP
Upon receiving the signal, the DMA controller reads the new command and executes the command, as indicated by arrow 56.

【0014】例えば、コマンド58を実行するために
は、矢印60で示すようにバッファ46に入っているデ
ータを読み取り、矢印62で示すようにそのデータをデ
バイス38に転送する必要がある。コマンド処理が継続
すると、DMAコントローラは、矢印66で示すよう
に、ロケーション64のようなコマンド・エントリ内の
一定ロケーションへステータス(状況)を返却し、WAKE
UP信号をホスト・プロセッサへ送って、矢印68で示す
ように、別の記述子が処理されたことを通知する。これ
を受けて、ホスト・プロセッサは矢印70で示すよう
に、ステータス情報を調べ、その間にDMAコントロー
ラは次のコマンド72をフェッチして実行する。
For example, to execute command 58, it is necessary to read the data contained in buffer 46 as indicated by arrow 60 and transfer that data to device 38 as indicated by arrow 62. As command processing continues, the DMA controller returns a status to a certain location within the command entry, such as location 64, as indicated by arrow 66, and WAKE
A UP signal is sent to the host processor to indicate that another descriptor has been processed, as indicated by arrow 68. In response, the host processor examines the status information, as indicated by arrow 70, during which the DMA controller fetches and executes the next command 72.

【0015】各デバイスは、通常各自のデータ転送チャ
ネルに接続されている。従って、入出力ドライバ・ソフ
トウェアは、DMAチャネルを入出力デバイスに動的に
割り当てるという責任から解放されている。全二重(ful
l-duplex) デバイス(イーサネットなど)には、2つの
データ転送チャネルが割り当てられるのが普通であり、
その場合には、データは双方向に同時に送信されてい
る。半二重デバイス(ディスク・コントローラなど)の
場合は、チャネルは1つで十分である。
Each device is typically connected to its own data transfer channel. Therefore, the I / O driver software is relieved of the responsibility of dynamically assigning DMA channels to I / O devices. Full duplex
l-duplex) devices (such as Ethernet) are usually assigned two data transfer channels,
In that case, the data is being transmitted simultaneously in both directions. For half-duplex devices (such as disk controllers) one channel is sufficient.

【0016】ほとんどの場合、制御情報(シーク・アド
レスなど)の転送は、データ転送の開始前に行われる。
同様に、ステータス情報(ショート転送カウントなど)
はデータ転送が完了したあと返却される。どちらの場合
も、制御情報転送、データ転送、およびステータス情報
転送は順次に行われるので、同じDMAチャネル資源を
共有することが可能である。
In most cases, the transfer of control information (such as seek address) occurs before the start of the data transfer.
Similarly, status information (short transfer count, etc.)
Will be returned after the data transfer is complete. In either case, the control information transfer, the data transfer, and the status information transfer are sequentially performed, so that the same DMA channel resource can be shared.

【0017】デバイス固有のコマンド・リストに入って
いるコマンドは、半二重トラフィックをサポートする場
合は個別に、全二重トラフィックをサポートする場合は
ペアで使用されることが期待されている。これらのリス
ト内のコマンドは、入出力オペレーションが行われると
き絶えず消費されるという点で、通常は一時的なもので
ある。しかし、入出力オペレーション(端末読取りやフ
ロー制御書込みなど)によっては、無期限に存続するも
のもある。
The commands in the device-specific command list are expected to be used individually to support half-duplex traffic and in pairs to support full-duplex traffic. The commands in these lists are usually temporary in that they are constantly consumed as I / O operations are performed. However, some I / O operations (such as terminal reads and flow control writes) may persist indefinitely.

【0018】記述子リスト・スペース40はホスト・プ
ロセッサ32によって割り振られ、1組のコマンド・リ
スト・エントリを入れてから、その所有権がホスト・プ
ロセッサからDMAコントローラ36へ渡される。DM
Aコントローラ36はコマンド・エントリをフェッチ
し、コマンド・エントリで指定されたデータ転送オペレ
ーションを実行し、STOPエントリまでに到達するか、あ
るいは例外条件が検出されるまでコマンド・エントリを
処理していく。
The descriptor list space 40 is allocated by the host processor 32 and contains a set of command list entries before its ownership is passed from the host processor to the DMA controller 36. DM
The A controller 36 fetches the command entry, executes the data transfer operation specified by the command entry, and processes the command entry until the STOP entry is reached or an exceptional condition is detected.

【0019】記述子リストを構成するには、いくつかの
方法が可能である。例えば、それ自身がループするよう
に(循環キュー)、あるいは個々のデータ転送オペレー
ションをリンクするように(リンクされたリスト)、あ
るいはデータ転送オペレーションのグループをリンクす
るように(ハイブリッド・アプローチ)構成することが
可能である。大部分のコマンドにはブランチを組み込む
ことができる。コマンド・リストの詳細構造は、入出力
ドライバ・ソフトウェアの規則によって左右される。
There are several possible ways to construct the descriptor list. For example, configure itself to loop (circular queue), link individual data transfer operations (linked list), or link groups of data transfer operations (hybrid approach) It is possible. Most commands can include branches. The detailed structure of the command list depends on the rules of the I / O driver software.

【0020】以前に開始されたDMAオペレーションが
進行している途中で、追加のコマンドを既存コマンド・
リストに動的に追加することが可能である。コマンド・
リストの追加は、追加のコマンド・リストを作成し、既
存コマンド・リストの最後にあるSTOPコマンドを新リス
トの最初のコマンドへのブランチでオーバライトするこ
とによって行われるのが代表的である。
While the previously started DMA operation is in progress, additional commands are
It can be added dynamically to the list. command·
The list is typically added by creating an additional command list and overwriting the STOP command at the end of the existing command list with a branch to the first command of the new list.

【0021】待ち(wait)フィールドは、チャネル内のフ
ロー制御を行うために使用できる。チャネルは、プロセ
ッサまたは別のデバイスから通知があるまで待つように
プログラムすることができる。
The wait field can be used to perform flow control within the channel. The channel can be programmed to wait until notified by the processor or another device.

【0022】図2に示すように、記述子ベースのDMA
コントローラ36は、複数のデバイス38、38’をシ
ステム・バス74に間接的に接続するものと期待されて
いるが、これは、システム・バスがシステム・メモリ3
4への読み書きトランザクションをサポートしている場
合である(図1)。プロセッサ割込みは、特殊な信号ワ
イヤを通して引き起こされるか(マザーボード設計の場
合)、あるいはWAKEイベントを送ることによって引き起
こされる(事前指定のレジスタ・アドレスへの32ビッ
ト書込みの場合)。コントローラ・ステート(状態)に
は、共用ステート(shared state)80とチャネル・ステ
ート (channel state)78(これは接続された各デバイ
スごとに複製される)とがある。
Descriptor-based DMA, as shown in FIG.
The controller 36 is expected to indirectly connect a plurality of devices 38, 38 'to the system bus 74, which means that the system bus is in the system memory 3
This is the case where read / write transactions to 4 are supported (FIG. 1). Processor interrupts are either triggered through a special signal wire (for motherboard designs) or by sending a WAKE event (for a 32-bit write to a pre-specified register address). The controller states include a shared state 80 and a channel state 78 (which is duplicated for each connected device).

【0023】ある実施形態では、ハードウェアは、ある
種のContextIndexステート80を使用してDMAコンテ
クストのどちらが現在アクティブ(活動状態)であるか
を識別できるようになっているが、このステートは直接
にも間接にもソフトウェアがアクセスすることができな
い。データ転送エンジン(data transfer engine)76
は、要求されたデータ転送を実行するための機能を備え
ている。
In some embodiments, the hardware can use some ContextIndex state 80 to identify which of the DMA contexts are currently active, but this state is directly Indirectly, the software cannot access it. Data transfer engine 76
Has the functionality to perform the requested data transfer.

【0024】別の実施形態では、複数のデータ転送エン
ジンが並列に動作して、バス・アービタ(bus arbiter)
を通してバスをアクセスできるようになっている。この
実施形態については、あとで詳しく説明する。
In another embodiment, multiple data transfer engines operate in parallel to create a bus arbiter.
You can access the bus through. This embodiment will be described in detail later.

【0025】入出力デバイスはデータ・バイト・ストリ
ームに接続することが可能であり、この場合は、コント
ローラは、これらのアドレスを除いたデータ・バイトを
システム・メモリへ移動すること、あるいはそこから移
動することを取り扱う。コントローラは、あとで詳しく
説明するように、3ビットのキー値を提供する。キー・
コード化(key encoding)の4つは、どちらのバイト・ス
トリームが使用されているかを識別するために使用され
る。代表例として、標準データ・ストリームはストリー
ム0となり、オプションの制御/ステータス・ストリー
ムはストリーム1となる。
The I / O devices can be connected to a stream of data bytes, in which case the controller will move the data bytes, excluding these addresses, to or from system memory. Handle what to do. The controller provides a 3-bit key value, as described in detail below. Key·
Four of the key encodings are used to identify which byte stream is being used. Typically, the standard data stream will be stream 0 and the optional control / status stream will be stream 1.

【0026】コントローラは、デバイス・レジスタとメ
モリとの間でデータを直接移動することをサポートする
ことができる。この場合は、コントローラは、データが
転送されている間に、デバイス・レジスタ・アドレスの
シーケンスを提供する。追加のキー・コード化は、デバ
イス・レジスタへの転送を識別するために使用される。
The controller can support direct movement of data between device registers and memory. In this case, the controller provides the sequence of device register addresses while the data is being transferred. The additional key encoding is used to identify transfers to device registers.

【0027】各チャネルは、いくつかのメモリ・マップ
・レジスタ(memory mapped register)を備えている。こ
れらのレジスタには、コマンド・リストを指すシーケン
サのポインタを初期化するために使用されるCommandPtr
レジスタ82(図2)を含めることが可能である。64
ビット・アドレシングをサポートする必要があるとき
は、このレジスタは32ビットCommandPtrLoレジスタと
32ビットCommandPtrHiレジスタに分割することができ
る。他のメモリ・マップ・レジスタは以下で説明する。
Each channel comprises a number of memory mapped registers. These registers contain the CommandPtr used to initialize the sequencer pointer to the command list.
Register 82 (FIG. 2) may be included. 64
This register can be split into a 32-bit CommandPtrLo register and a 32-bit CommandPtrHi register when needed to support bit addressing. Other memory map registers are described below.

【0028】メモリ・マップ以外のレジスタもある。例
えば、addPtrレジスタ86は、データが読み取られるメ
モリ内のアドレスを保持しており、カウント・レジスタ
88は、読み取るべきであるが残っているデータ量を保
持している。
There are registers other than the memory map. For example, addPtr register 86 holds the address in memory where the data is read, and count register 88 holds the amount of data that should be read but remains.

【0029】その他のレジスタは図2にextendState レ
ジスタ84として示されている。そのいくつかはメモリ
・マップである。
The other registers are shown in FIG. 2 as extendState register 84. Some of them are memory maps.

【0030】システム・メモリをアクセスしているとき
起こる回復不能エラーとしては、パリティ・エラーとア
ドレシング・エラーがある。使用中再試行(busy-retry)
エラーは回復可能バス・エラーと見ることができるの
で、それが成功裡に完了するか、あるいはDMAコント
ローラのコマンド処理が途中で打ち切られる(アボート
される)まで、再試行することが可能である。
Unrecoverable errors that occur when accessing system memory include parity errors and addressing errors. Retry in use (busy-retry)
The error can be viewed as a recoverable bus error and can be retried until either it completes successfully or the DMA controller command processing is aborted prematurely.

【0031】回復不能エラーが起こると、現在実行中の
DMAチャネルのChannelStatus レジスタにdead(デッ
ド)ビットがセットされる。ソフトウェアはChannelSta
tusレジスタの run(ラン)ビットを明示的にゼロにリ
セットし、そのあとでこのビットを1に戻して操作可能
状態に戻さなければならない。
When an unrecoverable error occurs, the dead bit is set in the ChannelStatus register of the currently executing DMA channel. Software is ChannelSta
You must explicitly reset the run bit in the tus register to zero and then return it to the operational state by setting it back to 1.

【0032】デバイスの制御レジスタとステータス・レ
ジスタは直接にシステム・メモリ空間にマッピングでき
るので、プロセッサは読み書きトランザクションを使用
してこれらを直接にアクセスすることができる。ある種
のアプリケーションでは、プロセッサはデータ転送が終
わるたびにこれらのレジスタを更新する必要があり、そ
のときは、チャネル・プログラムはデバイス・ステータ
スを明示的に返却する必要がなくなる。しかし、ある種
のデバイスは、複数のデータ転送要求を自律的に処理す
るインテリジェンスをもっている。これらのアプリケー
ションでは、チャネルが次のデータ転送を開始する前に
デバイス・ステータスを自律的に返却できないと、プロ
セッサ・パフォーマンスが影響を受けることになる。ス
テータス・ストリームとデバイス・ステータス・レジス
タの2つは、返却されるデバイス・ステータスが得られ
るソースである。
The control and status registers of the device can be mapped directly into the system memory space so that the processor can access them directly using read and write transactions. In some applications, the processor needs to update these registers after each data transfer, when the channel program does not have to explicitly return device status. However, some devices have the intelligence to autonomously handle multiple data transfer requests. In these applications, processor performance will be impacted if the channel cannot autonomously return device status before starting the next data transfer. The status stream and device status register are the two sources from which the returned device status is obtained.

【0033】ステータス・ストリームが使用される場合
は、別のデータ転送コマンドを使用して、ステータス・
バイト・ストリームをメモリに転送することができる。
ユニーク・キー値は、ステータス・バイト・ストリーム
と通常のデータ転送ストリームとを区別するために使用
される。
If the status stream is used, another data transfer command is used to
The byte stream can be transferred to memory.
The unique key value is used to distinguish between the status byte stream and the regular data transfer stream.

【0034】ステータス・レジスタが使用される場合
は、別のデータ転送コマンドを使用すると、デバイス・
レジスタ・アドレス範囲の値をメモリに転送することが
できる。別のユニーク・キー値が、このメモリ・マップ
転送と通常のデータ転送ストリームとを区別するために
使用できる。しかし、後述するLOAD_QUAD やSTORE_QUAD
などの特殊なコマンドをこの目的に使用することが好ま
しい。これらのコマンドを使用すると、追加のアドレス
・レジスタ群の必要がなくなる。
If the status register is used, another data transfer command will
Values in the register address range can be transferred to memory. Another unique key value can be used to distinguish this memory map transfer from a normal data transfer stream. However, LOAD_QUAD and STORE_QUAD described later
It is preferred to use special commands such as. Using these commands eliminates the need for additional address registers.

【0035】後述するように、INPUT 、OUTPUTおよびNO
P コマンドは、コマンド・シーケンスで任意的にブラン
チするときの条件とアドレスを指定する。コマンド処理
の条件付き割込み発生と条件付き一時中止を指定するに
は、同じようなメカニズムが使用される。
As will be described later, INPUT, OUTPUT and NO
The P command specifies the condition and address for optional branching in the command sequence. A similar mechanism is used to specify conditional interrupt generation and conditional suspension of command processing.

【0036】DB DMAコントローラ・アーキテクチ
ャは、プロセッサから直接に見ることができる2つのコ
ンポーネントをもっている。1つは、チャネル・レジス
タのリニア・アレイであり、もう1つは、サポートされ
るデバイス・レジスタに直接にマッピングできるリニア
・アレイである。これらのデータ構造のベース(基底)
アドレスは関連バス標準によって、あるいはそのフォー
マットが関連バス標準によって規定されているROMデ
ーダ構造内に、あるいはマザーボード・インプリメンテ
ーションの場合には、チップまたはシステム仕様に定義
されている。
The DB DMA controller architecture has two components that are directly visible to the processor. One is a linear array of channel registers and the other is a linear array that can be directly mapped to the supported device registers. The base of these data structures
The address is defined by the relevant bus standard, or in a ROM data structure whose format is defined by the relevant bus standard, or in the case of a motherboard implementation, a chip or system specification.

【0037】各チャネルは、直接的にはシステム・アド
レス空間を介して、間接的には後述するSTORE_QUADやLO
AD_QUAD などのコマンドを介して、アクセスできるレジ
スタ群を備えている。これらのレジスタのいくつかはオ
プションであり、基本チャネルに備わっている機能を拡
張するために使用される。表1は、チャネル・レジスタ
の各々のオフセットを示している。このオフセットは、
レジスタが間接的にアクセスされるときは、文字とおり
後述するCommand.address フィールドに入っている。ホ
ストまたは、チャネル・コマンドによって直接的にアク
セスされるときは、レジスタのアドレスは、システム定
義のチャネル・ベース・アドレスとレジスタのオフセッ
ト値の和である。
Each channel directly stores a STORE_QUAD or LO, which will be described later, through the system address space.
It has a set of registers that can be accessed via commands such as AD_QUAD. Some of these registers are optional and are used to extend the functionality provided by the base channel. Table 1 shows the offset of each of the channel registers. This offset is
When a register is accessed indirectly, it is literally in the Command.address field described below. When directly accessed by a host or channel command, the address of the register is the system-defined channel base address plus the offset value of the register.

【0038】[0038]

【表1】 [Table 1]

【0039】要約すると、必須レジスタの機能は次のと
おりである。ChannelControlとChannelStatus は、チャ
ネルを制御し、チャネルの活動を監視するために使用さ
れる。CommandPtrは、チャネルのコマンド・リストがメ
モリのどこに置かれているを示すために使用される。レ
ジスタ・セット全体の詳細は以下で説明する。
In summary, the functions of the mandatory registers are: ChannelControl and ChannelStatus are used to control the channel and monitor channel activity. CommandPtr is used to indicate where in the memory the command list for the channel is located. Details of the entire register set are described below.

【0040】読取専用のChannelStatus レジスタによ
り、チャネルの内部ステータス・ビットへのアクセスが
できる。ChannelControlレジスタのビットは、ChannelS
tatusレジスタを介して見ることもできる。ChannelStat
us レジスタへの書込みは無視される。ChannelStatus
レジスタのフォーマットは図3に示されている。
The read-only ChannelStatus register allows access to the internal status bits of the channel. The bits in the ChannelControl register are ChannelS
It can also be viewed via the tatus register. ChannelStat
Writing to the us register is ignored. ChannelStatus
The register format is shown in FIG.

【0041】概要を説明すると、run(ラン)ビットとpa
use(休止)ビットは、ソフトウェアによってセットさ
れ、クリアされる「制御」ビットである。flush(フラッ
シュ)ビットとwake(ウェイク)ビットは、ソフトウェ
アによってセットされ、アクションが実行されたときハ
ードウェアによってクリアされる「コマンド」ビットで
ある。dead(デッド)ビット、active(アクティブ)ビ
ット、およびbtビットはハードウェア・ステータス・ビ
ットである。ビットs7...s0 は、汎用ステータスと制御
用に使用できる。これらの意味はチャネル固有であり、
これらのビットはハードウェアによっても、ソフトウェ
アによっても制御できる。
In summary, the run bit and pa
The use (pause) bit is a "control" bit that is set and cleared by software. The flush and wake bits are "command" bits that are set by software and cleared by hardware when an action is performed. The dead, active, and bt bits are hardware status bits. Bits s7 ... s0 are available for general purpose status and control. These meanings are channel specific,
These bits can be controlled by either hardware or software.

【0042】ChannelStatus.run ビットはソフトウェア
によって1にセットされると、チャネルによる実行が開
始される。これを行うのは、CommandPtrレジスタが初期
化されたあとだけにすべきである。さもないと、チャネ
ルのオペレーションが未定義になる。ソフトウェアでこ
のビットをゼロにクリアすると、チャネルのオペレーシ
ョンは途中で打ち切られる(アボートされる)。チャネ
ルのオペレーションが打ち切られると、データ転送は中
止され、ステータスが返却され、割込みが発生される。
チャネル・バッファに一時的にストアされていたデータ
は失われるおそれがある。
When the ChannelStatus.run bit is set to 1 by software, the channel will start running. This should only be done after the CommandPtr register has been initialized. Otherwise, the channel's operation will be undefined. When software clears this bit to zero, the channel's operation is aborted. When the operation of the channel is aborted, the data transfer is aborted, the status is returned and an interrupt is generated.
The data temporarily stored in the channel buffer may be lost.

【0043】ChannelStatus.pause ビットはソフトウェ
アによって1にセットされると、コマンド処理が一時中
止される(サスペンドされる)。これを受けて、ハード
ウェアはデータ転送とコマンド実行を一時中止し、その
あとChannelStatus.activeビットをクリアする。
When the ChannelStatus.pause bit is set to 1 by software, command processing is suspended (suspended). In response to this, the hardware suspends data transfer and command execution, and then clears the ChannelStatus.active bit.

【0044】ソフトウェアは、コマンド処理を再開する
ためにChannelStatus.pause ビットをゼロにリセットし
なければならない。
Software must reset the ChannelStatus.pause bit to zero to resume command processing.

【0045】ChannelStatus.flush ビットをソフトウェ
アで1にセットすると、INPUT_MOREまたはINPUT_LASTコ
マンドを実行中のチャネルは、デバイスから受信された
が、まだメモリに書かれていないデータがあると、その
データでメモリを更新する。メモリ更新が完了すると、
ハードウェアは、現在メモリに置かれているチャネル・
コマンドのxferStatusフィールドとresCountフィールド
を更新し(チャネル・コマンドまたは記述子のフィール
ドは後述する)、そのあとでflush ビットをクリアす
る。従って、「部分的な」ステータス更新はxferStatus
フィールドのflush ビットが「1」になることで示さ
れ、「最終的な」ステータス更新はこのビットが「0」
になることで示される。
When the ChannelStatus.flush bit is set to 1 by software, the channel that is executing the INPUT_MORE or INPUT_LAST command will receive the data from the device, but if there is data that has not been written to the memory, the memory will be flushed with that data. Update. When the memory update is completed,
The hardware depends on the channel currently in memory.
Update the xferStatus and resCount fields of the command (the channel command or descriptor fields are described below) and then clear the flush bit. So a "partial" status update would be xferStatus
This is indicated by the flush bit of the field going to '1', and the'final 'status update has this bit set to' 0 '.
Is indicated by.

【0046】ChannelStatus.wakeビットは、ソフトウェ
アによってセットされると、アイドルとされていたチャ
ネルを起動し(ウェイクアップし)、CommandPtrにより
ポイントされているコマンドを再フェッチし、そしてコ
マンド処理を続行する。チャネルは、STOPコマンドを実
行した後、アイドルとなる。STOPコマンドは、Commannd
Ptr レジスタを増加させない。
The ChannelStatus.wake bit, when set by software, wakes up the idle channel, refetches the command pointed to by CommandPtr, and continues command processing. The channel becomes idle after executing the STOP command. The STOP command is Commandd
Do not increment the Ptr register.

【0047】ChannelStatus.deadビットは、バス・エラ
ーやデバイス・エラーなどの重大なイベント(事象)が
起こったためにチャネルが実行を中止したときハードウ
ェアによって1にセットされる。現在のコマンドは中止
され、ハードウェアは書込みステータスをメモリに書き
戻すことを試みる。以降のコマンドは実行されない。ハ
ードワイヤド割込み信号がインプリメントされていれ
ば、無条件割込みが発生する。ハードウェアがChannelS
tatus.deadをセットすると、ChannelStatus.activeが同
時にデアサート(deassert)される。ハードウェアは、ru
n ビットがソフトウェアによってクリアされると、Chan
nelStatus.deadビットをゼロにリセットする。
The ChannelStatus.dead bit is set by the hardware when the channel stops running due to a significant event such as a bus error or device error. The current command is aborted and the hardware attempts to write the write status back to memory. Subsequent commands are not executed. An unconditional interrupt occurs if the hardwired interrupt signal is implemented. Hardware is ChannelS
Setting tatus.dead causes ChannelStatus.active to be deasserted at the same time. Hardware is ru
If n bits are cleared by software, Chan
Reset the nelStatus.dead bit to zero.

【0048】ChannelStatus.activeビットは、ソフトウ
ェアがrun ビットを1にセットすると、これを受けてハ
ードウェアによって1にセットされる。ChannelStatus.
activeは、ソフトウェアがrun ビットをクリアするか、
pause ビットをセットするとこれを受けて、ハードウェ
アによってゼロにリセットされる。このビットは、STOP
コマンドが実行された後および、ハードウェアがdeadビ
ットを1にセットしたときもゼロにリセットされる。
The ChannelStatus.active bit is set to 1 by the hardware in response to this when the software sets the run bit to 1. ChannelStatus.
active means the software clears the run bit or
When the pause bit is set, it is reset by hardware in response to this. This bit is STOP
It is also reset to zero after the command is executed and also when the hardware sets the dead bit to 1.

【0049】ChannelStatus.btビットは、NOP 、INPUT
、およびOUTPUTコマンドが完了したときハードウェア
によりセットされ、ブランチが起こったことを示してい
る。後述するように、ブランチは、コマンド記述子の中
のCommand.b フィールド、ChannelStatus.s7..s0ビット
およびBranchSelect条件レジスタのマスクと値フィール
ドの値によって制御される。このビットがCommand.xfer
Statusフィールドに存在していることにより、ソフトウ
ェアは最小限のオーバヘッドで実際のチャネル・プログ
ラム・フローをたどっていくことができる。
ChannelStatus.bt bit is NOP, INPUT
, And set by the hardware when the OUTPUT command completes, indicating that a branch has occurred. As described below, the branch is controlled by the Command.b field in the command descriptor, the ChannelStatus.s7..s0 bit and the value of the Mask and Value fields of the BranchSelect condition register. This bit is Command.xfer
Its presence in the Status field allows software to follow the actual channel program flow with minimal overhead.

【0050】各DMAチャネルは最高8個までの汎用ス
テート・ビット(ChannelControl.s7..ChannelControl.s
0)をもっており、これらのビットはチャネル制御レジス
タを介して書き込み、ChannelStatus レジスタを介して
読み取ることができる。ある種のチャネル・インプリメ
ンテーションでは、ハードワイヤド接続を通して直接に
これらのビットをセットし、クリアする別の方法が用意
されていると望ましい場合がある(例えば、エラー発生
時やロジカル(論理)レコードの完了を通知するため
に)。これらのビットは各コマンドの完了時にテストし
て、なんらかのアクションが必要かどうかを判断するこ
とができる。そのようなアクションとしては、ハードワ
イヤド割込み信号の生成、以降のコマンド処理の一時中
止、以降のコマンド・フェッチのための新ロケーション
へのブランチなどがある。
Each DMA channel has up to eight general purpose state bits (ChannelControl.s7..ChannelControl.s).
0), these bits can be written through the channel control register and read through the ChannelStatus register. Some channel implementations may wish to have other methods of setting and clearing these bits directly through hard-wired connections (eg, on error or logical). To signal the completion of the record). These bits can be tested at the completion of each command to determine if any action is needed. Such actions include generating a hardwired interrupt signal, suspending subsequent command processing, and branching to a new location for subsequent command fetches.

【0051】ChannelControlレジスタのフォーマットは
図4に示されている。ChannelControlレジスタは、Chan
nelStatus レジスタに示されているビットの書込みポー
トとして利用される。ChannelControl.mask フィールド
は、下位16ビットのどれをwrite(書込み)によって変
更すべきかを選択する。ChannelControlの下位半分のビ
ットは、ChannelControl.mask 内の対応するビットがセ
ットされている場合にだけ書き込まれる。
The format of the Channel Control register is shown in FIG. ChannelControl register is Chan
Used as a write port for the bits shown in the nelStatus register. The ChannelControl.mask field selects which of the lower 16 bits should be changed by write. Bits in the lower half of ChannelControl are written only if the corresponding bit in ChannelControl.mask is set.

【0052】ChannelControl.data フィールドの値は、
ChannelControl.mask フィールドに基づいて条件付きで
ChannelStatus レジスタに書き込まれる。注意すべきこ
とは、上述したように、ChannelStatus レジスタのビッ
トの中には、書込み可能でないもの、あるいは1のステ
ートまたはゼロのステートにだけ書かれるものがあるこ
とである。
The value of the ChannelControl.data field is
Conditionally based on the ChannelControl.mask field
Written to ChannelStatus register. Note that, as mentioned above, some of the bits in the ChannelStatus register may not be writable or may only be written to the one state or zero state.

【0053】CommandPtrHiレジスタとCommandPtrLoレジ
スタは、次にフェッチされるコマンド・エントリのアド
レスを特定している。すべてのチャネル・コマンドは1
6バイトで境界合せを行っているので、CommandPtrLoレ
ジスタの最下位4ビットは常にゼロが書かれている。こ
れらのビットにゼロ以外の値が書かれると、チャネルの
オペレーションは未定義になる。これらのビットが読み
取られたとき返却される値は未定義になっている。Comm
andPtrレジスタはいつでも読み取ることができるが、Co
mmandPtrレジスタへの書込みは、ChannelStatus.run ビ
ットとChannelStatus.activeビットが共にゼロでなけれ
ば無視される。
The CommandPtrHi register and the CommandPtrLo register specify the address of the command entry to be fetched next. 1 for all channel commands
Since the boundary is aligned with 6 bytes, the least significant 4 bits of the CommandPtrLo register are always written with zero. If these bits are written with a non-zero value, the operation of the channel is undefined. The value returned when these bits are read is undefined. Comm
The andPtr register can be read at any time, but Co
Writes to the mmandPtr register are ignored unless both ChannelStatus.run and ChannelStatus.active bits are zero.

【0054】InterruptSelect 条件レジスタは割込み条
件ビットを生成するために使用される。このビットは各
コマンドの完了時にテストされ、ハードワイヤド割込み
信号をアサート(assert)すべきかどうかが判断される。
そのフォーマットは図5に示されている。
The InterruptSelect condition register is used to generate interrupt condition bits. This bit is tested at the completion of each command to determine if the hardwired interrupt signal should be asserted.
Its format is shown in FIG.

【0055】2つの8ビットres フィールドは予備であ
る。ソフトウェアはゼロ値を書き込むが、ハードウェア
はそこに書かれたデータ値を無視する。レジスタが読み
取られたとき、これらのフィールドに入って返却された
値は未定義になっている。8ビット・マスクと値フィー
ルドはコマンド記述子が処理されるとき割込みの発生に
影響を及ぼす。割込み条件信号"c" は、各チャネル・コ
マンドによってテストすることができ、次の式に従って
生成される。
The two 8-bit res fields are reserved. The software writes a zero value, but the hardware ignores the data value written there. The values returned in these fields when the register is read are undefined. The 8-bit mask and value fields affect the occurrence of interrupts when the command descriptor is processed. The interrupt condition signal "c" can be tested by each channel command and is generated according to the following equation:

【0056】[0056]

【数1】 c = (ChannelStatus.s7..s0 & InterruptSelect.mask) == (InterruptSelect.value & InterruptSelect.mask). BranchSelect条件レジスタはブランチ条件ビットを生成
するために使用され、このビットは各コマンドの完了時
にテストされ、ブランチを行うべきかどうかが判断され
る。BranchSelect条件レジスタは、InterruptSelect 条
件レジスタと同じフォーマットになっている。ブランチ
条件信号は次の式に従って生成される。
## EQU00001 ## c = (ChannelStatus.s7..s0 & InterruptSelect.mask) == (InterruptSelect.value & InterruptSelect.mask). The BranchSelect condition register is used to generate the branch condition bit, which is used for each command. Will be tested upon completion to determine if the branch should be taken. The BranchSelect condition register has the same format as the InterruptSelect condition register. The branch condition signal is generated according to the following equation.

【0057】[0057]

【数2】 c = (ChannelStatus.s7..s0 & BranchSelect.mask) == (BranchSelect.value & BranchSelect.mask). WaitSelect条件レジスタは待ち条件ビットを生成するた
めに使用され、これは各コマンドの完了時にテストさ
れ、コマンド実行を一時中止すべき(サスペンドすべ
き)かどうかが判断される。WaitSelect条件レジスタ
は、InterruptSelect条件レジスタと同じフォーマット
になっている。待ち条件信号は次の式に従って生成され
る。
C = (ChannelStatus.s7..s0 & BranchSelect.mask) == (BranchSelect.value & BranchSelect.mask). The WaitSelect condition register is used to generate wait condition bits, which is Tested on completion to determine if command execution should be suspended (suspended). The WaitSelect condition register has the same format as the InterruptSelect condition register. The wait condition signal is generated according to the following equation.

【0058】[0058]

【数3】 c = (ChannelStatus.s7..s0 & WaitSelect.mask) == (WaitSelect.value & WaitSelect.mask). Data2PtrHiレジスタとData2PtrLoレジスタは、デバイス
・レジスタ・スペースから、第2システム・メモリ空間
から、あるいはチャネル・レジスタからデータ転送を行
うときの2次64ビット・ベース・アドレスを指定して
いる。
[Formula 3] c = (ChannelStatus.s7..s0 & WaitSelect.mask) == (WaitSelect.value & WaitSelect.mask). The Data2PtrHi and Data2PtrLo registers are moved from the device register space to the second system memory space. Or a secondary 64-bit base address when data is transferred from the channel register or from the channel register.

【0059】AddressHi レジスタは32ビットのComman
d.address フィールドを64ビットに拡張するために使
用される。64ビット・インプリメンテーションでは、
これは、すべてのデータ転送コマンドの前に置かれたST
ORE_QUADコマンドでロードされる必要がある。アドレス
指定されたデスティネーションへデータ転送する初期実
行フェーズで、AddressHi の値はチャネルのデータ・バ
ッファ・アドレス・レジスタの上位32ビット(DataPtr
Hi) にロードされる。
The AddressHi register is a 32-bit Comman
Used to extend the d.address field to 64 bits. In a 64-bit implementation,
This is the ST that precedes all data transfer commands.
Must be loaded with the ORE_QUAD command. During the initial execution phase of transferring data to the addressed destination, the AddressHi value is the upper 32 bits (DataPtr) of the channel's data buffer address register.
Hi) is loaded.

【0060】BranchAddressHi レジスタは32ビットの
Command.branchAddress フィールドを64ビットに拡張
するために使用される。64ビット・インプリメンテー
ションでは、これはブランチを指定しているすべてのコ
マンドの前に置かれたSTORE_QUADコマンドでロードされ
る必要がある。ブランチが行われると、BranchAddressH
i の値はCommandPtrHiにロードされる。
The BranchAddressHi register is a 32-bit
Used to extend the Command.branchAddress field to 64 bits. In a 64-bit implementation, this needs to be loaded with a STORE_QUAD command that precedes all commands specifying a branch. When a branch is taken, BranchAddressH
The value of i is loaded into CommandPtrHi.

【0061】コマンドの一般フォーマットは、図6に示
すように、16ビットのop-code フィールド(4ビット
のcmd フィールドを含む)、16ビットのreqCountフィ
ールド、32ビットのアドレス・パラメータ、および3
2ビットのcmdDepパラメータからなっている。xferStat
usフィールドとresCountフィールドは、コマンド完了後
にステータスを報告するためにチャネルによって使用さ
れる。cmdDepのロケーションとサイズはすべてのコマン
ドで標準化されているが、その解釈はCommand.cmd の値
によって決まる。
The general format of the command is, as shown in FIG. 6, a 16-bit op-code field (including a 4-bit cmd field), a 16-bit reqCount field, a 32-bit address parameter, and 3 bits.
It consists of a 2-bit cmdDep parameter. xferStat
The us and resCount fields are used by the channel to report status after command completion. The location and size of cmdDep is standardized for all commands, but its interpretation depends on the value of Command.cmd.

【0062】Command.cmd フィールドは、どのタイプの
データ転送が行われるかを指定しており、表2のように
定義されており、以下で説明されている。
The Command.cmd field specifies which type of data transfer is to be performed and is defined as in Table 2 and described below.

【0063】[0063]

【表2】 [Table 2]

【0064】Command.key フィールドは、表3に指定さ
れているように、デバイスの「アクセス・ポート」のど
れを使用するかを選択するために使用される。
The Command.key field is used to select which of the device's "access ports" to use, as specified in Table 3.

【0065】[0065]

【表3】 [Table 3]

【0066】INPUT コマンドとOUTPUTコマンドでは、キ
ー・フィールドは図7に矢印90,90′,92および
92′で示すように、代替デバイス・ストリーム(例え
ば、データとステータス)を指定することも、図7に矢
印94,94′および94″で示すように、2アドレス
転送が行われるとき(アクセスされるアドレスを提供す
るData2Ptrと一緒に)代替2次アドレス空間を指定する
こともできる。システム・メモリ空間32,32′がソ
ースとデスティネーションの両方となって行われる転送
は、図7に矢印96,96′で示すように指定して、実
行することも可能である。最後に、チャネル・ステート
・レジスタ空間を伴う転送は、図7に矢印98で示すよ
うに指定して、実行することが可能である。
In the INPUT and OUTPUT commands, the key field may also specify alternative device streams (eg, data and status), as indicated by arrows 90, 90 ', 92 and 92' in FIG. An alternate secondary address space can also be specified when a two-address transfer is made (along with the Data2Ptr which provides the address to be accessed), as indicated by arrows 94, 94 'and 94 "in 7. System Memory Transfers performed by using the spaces 32 and 32 'as both the source and the destination can be performed by designating as shown by arrows 96 and 96' in FIG. The transfer involving the register space can be designated and executed as shown by an arrow 98 in FIG.

【0067】LOAD_QUAD コマンドとSTORE_QUADコマンド
では、キー・フィールドは、即値データ(immediate dat
a)がどのアドレス空間へ転送されるかを指定している。
KEY_STREAM0 からKEY_STREAM3 までは、このコンテキス
トでは無効である。
In the LOAD_QUAD command and STORE_QUAD command, the key field is immediate data (immediate dat).
It specifies to which address space a) is transferred.
KEY_STREAM0 to KEY_STREAM3 are invalid in this context.

【0068】表4は、キー・フィールドがデータ転送コ
マンドの各々と組み合わさってどのような働きをするか
を要約したものである。
Table 4 summarizes how the key field works in combination with each of the data transfer commands.

【0069】[0069]

【表4】 [Table 4]

【0070】各コマンドが完了したとき、ハードワイヤ
ド割込みを任意に引き起こすことができる。割込みの生
成は、チャネルによって生成される内部割込み条件ビッ
トと併用されて2ビットCommand.i フィールドによって
制御される。チャネルは、ChannelStatus.s7..s0ビット
の現在値を、各チャネルのInterruptSelect 条件レジス
タに入っているマスク値とデータ値と併用し、これらの
値に基づいて割込み条件を生成する。割込み条件を生成
するための、アルゴリズムを示すと、次のとおりであ
る。
A hardwired interrupt can optionally be triggered when each command completes. Interrupt generation is controlled by the 2-bit Command.i field in combination with the internal interrupt condition bits generated by the channel. The channel uses the current value of the ChannelStatus.s7..s0 bits in combination with the mask and data values contained in each channel's InterruptSelect condition register to generate an interrupt condition based on these values. The algorithm for generating the interrupt condition is as follows.

【0071】[0071]

【数4】 c = (ChannelStatus.s7..s0 & InterruptSelect.mask) == (InterruputSelect.value & InterruptSelect.mask) 注目すべきことは、多くのインプリメンテーションで
は、汎用ステータス・ビットのすべてに割込みを生成す
る必要がないことである。これらの場合には、割込み条
件は、それを単一のステータス・ビットに結びつけた
り、それをゼロに結びつけたりするのと同じように単純
化することができる。上記の式は、複数のステータス・
ビットの値に基づいて割込みを生成することが望ましい
ような場合に使用すべきである。
## EQU00004 ## c = (ChannelStatus.s7..s0 & InterruptSelect.mask) == (InterruputSelect.value & InterruptSelect.mask) It should be noted that many implementations interrupt all of the general status bits. Is that it does not need to be generated. In these cases, the interrupt condition can be as simple as tying it to a single status bit or tying it to zero. The above formula is for multiple status
It should be used when it is desirable to generate an interrupt based on the value of a bit.

【0072】表5は、割込み条件ビットがCommand.i フ
ィールドとどのように併用されて、割込みを引き起こす
かどうかが判断されるかを示している。
Table 5 shows how the interrupt condition bits are used with the Command.i field to determine whether to cause an interrupt.

【0073】[0073]

【表5】 [Table 5]

【0074】各コマンドが完了したとき、以降のコマン
ド・フェッチを任意に一時中止することができる。これ
は、チャネル・インタフェースによって生成される内部
待ち条件ビットと併用されてCommand.w フィールドによ
って制御される。チャネル・インタフェースは、Channe
lStatus.s7..s0ビットの現在値を、各チャネルのWaitSe
lect条件レジスタに入っているマスク値およびデータ値
と併用し、これらの値に基づいて待ち条件ビットを生成
する。待ち条件を生成するためのアルゴリズムは次のと
おりである。
When each command is completed, subsequent command fetches can be optionally suspended. This is controlled by the Command.w field in conjunction with internal wait condition bits generated by the channel interface. Channel interface is Channe
l The current value of status.s7..s0 bit is set to WaitSe of each channel.
Used in conjunction with the mask and data values contained in the lect condition register to generate wait condition bits based on these values. The algorithm for generating the wait condition is as follows.

【0075】[0075]

【数5】 c = (ChannelStatus.s7..s0 & WaitSelect.mask) == (WsitSelect.value & WaitSelect.mask) 表6は、待ち条件ビットがCommand.w フィールドとどの
ように併用されて、コマンド実行を一時中止するかどう
かが判断されるかを示している。
## EQU00005 ## c = (ChannelStatus.s7..s0 & WaitSelect.mask) == (WsitSelect.value & WaitSelect.mask) Table 6 shows how the wait condition bits are used in conjunction with the Command.w field Indicates whether to decide whether to suspend execution.

【0076】[0076]

【表6】 [Table 6]

【0077】大部分のコマンド(INPUT_MORE/LAST、OUTP
UT_MORE/LASTおよびNOP)が完了すると、CommandPtrは、
次のコマンドまたはブランチのターゲットを指すように
更新される。ブランチは、チャネルによって生成される
内部ブランチ条件ビットと併用されてCommand.b フィー
ルドによって制御される。チャネルは、ChannelStatus.
s7..s0ビットの現在値を、各チャネルのBranchSelect条
件レジスタに入っているマスク値およびデータ値と併用
し、これらの値に基づいてブランチ条件ビットを生成す
る。ブランチ条件を生成するためのアルゴリズムは次の
通りである。
Most commands (INPUT_MORE / LAST, OUTP
(UT_MORE / LAST and NOP) is completed, CommandPtr
Updated to point to the target of the next command or branch. The branch is controlled by the Command.b field in conjunction with an internal branch condition bit generated by the channel. The channel is ChannelStatus.
The current value of the s7..s0 bit is used together with the mask value and data value contained in the BranchSelect condition register of each channel, and the branch condition bit is generated based on these values. The algorithm for generating the branch condition is as follows.

【0078】[0078]

【数6】 c = (ChannelStatus.s7..s0 & BranchSelect.mask) == (BranchSelect.value & BranchSelect.mask) 表7は、ブランチ条件がCommand.b フィールドとどのよ
うに併用されて、ブランチを行うかどうかが判断される
かを示している。
## EQU00006 ## c = (ChannelStatus.s7..s0 & BranchSelect.mask) == (BranchSelect.value & BranchSelect.mask) Table 7 shows how branch conditions are used in conjunction with the Command.b field to branch It indicates whether or not to decide.

【0079】[0079]

【表7】 [Table 7]

【0080】コマンドが完了するとすぐに、ブランチ条
件が評価され、CommandPtrが更新される。
As soon as the command completes, the branch condition is evaluated and the CommandPtr is updated.

【0081】Command.reqCountフィールドは、データ転
送コマンドによって転送されるバイト数を指定するため
に使用される。
The Command.reqCount field is used to specify the number of bytes transferred by the data transfer command.

【0082】Command.address フィールドは、データ転
送で使用される1次32ビット・アドレス(つまり、6
4ビット・アドレスの最下位部分)を指定するために使
用される。INPUT コマンドとOUTPUTコマンドでは、これ
は常にシステム・メモリ・アドレスであり、データ・バ
ッファを指している。LOAD_QUAD コマンドとSTORE_QUAD
コマンドでは、これは、即値データがそこから、あるい
はそこへロードまたはストアされるアドレスである。こ
の場合、これはシステム・メモリ空間、デバイス・メモ
リ空間、またはチャネル・レジスタを指すことができ、
これはCommand.key フィールドによって制御される。
The Command.address field is the primary 32-bit address (ie 6
Used to specify the lowest part of a 4-bit address). For INPUT and OUTPUT commands, this is always the system memory address and points to the data buffer. LOAD_QUAD command and STORE_QUAD
In commands, this is the address from which immediate data is loaded or stored. In this case, this can point to system memory space, device memory space, or channel registers,
This is controlled by the Command.key field.

【0083】32ビットCommand.cmdDepフィールドの意
味とフォーマットは、Command.cmdの値によ
って決まる。STORE_QUADコマンドとLOAD_QUA
D コマンドでは、これは読み書きされるデータ値であ
る。INPUT コマンドとOUTPUTコマンドでは、これは32
ビット条件付きブランチ・ターゲット(つまり、64ビ
ット・ブランチ・ターゲットの最下位部分)を指定する
ために使用される。個々のコマンドの説明は後述する。
The meaning and format of the 32-bit Command.cmdDep field are as follows. It depends on the value of cmd. STORE_QUAD command and LOAD_QUA
For the D command, this is the data value read or written. For INPUT and OUTPUT commands this is 32
Used to specify the bit conditional branch target (ie, the least significant part of the 64-bit branch target). A description of each command will be given later.

【0084】コマンドが完了すると、チャネルのChanne
lStatus レジスタの現在の内容はCommand.xferStatusフ
ィールドに書き込まれる。ChannelStatus レジスタのフ
ォーマットは上述したとおりである。Commond.xferStat
usがメモリに書き込まれるとき、ChannelStatus.active
に対応するビットは常に1にセットされる。これは対応
するコマンドが実行されたことを示す働きをし、xferSt
atusフィールドとresCountフィールドは共に更新され
る。この機能を利用するためには、ホスト・ソフトウェ
アはこのビットをxferStatusフィールドの中でゼロに初
期化しておく必要がある。 INPUT コマンドでは、Chan
nelControl.flushビットは、ソフトウェアがバッファ内
のデータを強制的にメモリに書き込み、コマンドの完了
前にステータスが更新されるというメカニズムを提供し
ている。部分的ステータス報告は、flush ビットがxfer
Statusフィールドの中で1にセットされることによって
示される。
When the command is complete, the channel's Channe
The current contents of the lStatus register is written to the Command.xferStatus field. The format of the ChannelStatus register is as described above. Commond.xferStat
ChannelStatus.active when us is written to memory
The bit corresponding to is always set to 1. This serves to indicate that the corresponding command has been executed, and xferSt
Both the atus and resCount fields are updated. To take advantage of this feature, the host software must have this bit initialized to zero in the xferStatus field. In the INPUT command, Chan
The nelControl.flush bit provides a mechanism by which software forces the data in the buffer to be written to memory and the status updated before the command completes. The partial status report shows that the flush bit is xfer
It is indicated by being set to 1 in the Status field.

【0085】デバイスによっては、中間ステータスを自
動的に得て、コマンド記述子で指定された転送が完了す
る前に、データ・バイトがいくつ転送されたかを確かめ
ておきたい場合がある。これは、ChannelControlレジス
タ中のflush ビットをセットする能力をデバイスにもた
せることにより達成することができる。中間ステータス
報告は、端末入力などのように、ホストが入力データに
迅速に応答する必要があるが、バイトごとに割込みを引
き起こすことが望ましくない場合に役立つことがある。
Depending on the device, it may be desirable to automatically get an intermediate status to see how many data bytes have been transferred before the transfer specified in the command descriptor is complete. This can be accomplished by giving the device the ability to set the flush bit in the ChannelControl register. Intermediate status reporting may be useful when the host needs to respond quickly to incoming data, such as terminal input, but it is not desirable to cause a byte-by-byte interrupt.

【0086】中間ステータス機能はオプションのデバイ
ス依存機能である。この機能がインプリメントされてい
るときは、部分的ステータスが報告されるときの条件は
デバイス依存になっている。例えば、これは、デバイス
依存ステート・ビットを通して通知されたときや、最小
数のデータ・バイトが使用可能であったとき、あるいは
これらの条件の組み合わせが起こったとき、周期的に行
うことができる。
The intermediate status function is an optional device-dependent function. When this feature is implemented, the conditions under which the partial status is reported are device dependent. For example, this can be done periodically when signaled through device dependent state bits, when a minimum number of data bytes were available, or when a combination of these conditions occurred.

【0087】コマンドが完了すると、16ビット残余バ
イト・カウント値はCommand.resCountに書き込まれる。
この値は通常はゼロであるが、デバイスがデータ転送を
途中で中止したときは、ゼロより大きい値になることが
ある。
Upon completion of the command, the 16-bit residual byte count value is written to Command.resCount.
This value is usually zero, but can be greater than zero if the device aborts the data transfer.

【0088】Command.resCountフィールドとCommand.xf
erStatusフィールドは分割できない(indivisible) オペ
レーションで更新される。
Command.resCount field and Command.xf
The erStatus field is updated with indivisible operations.

【0089】INPUT_MORE、INPUT_LAST、OUTPUT_MORE 、
およびOUTPUT_LAST コマンドはメモリとデバイス・スト
リーム間でデータを転送する。OUTPUT_MORE とOUTPUT_L
ASTコマンドはシステム・メモリからデータを転送する
(このデータは、通常接続されたデバイスに送られ
る)。INPUT_MOREとINPUT_LASTコマンドはデータ(これ
は、通常接続されたデバイスから取り出される)をメモ
リへ転送する。データ・チェイニング(連鎖)は、これ
らのコマンドの"MORE"版と"LAST"版を使用することによ
り行われる。"MORE"コマンドは、現在のバッファがロジ
カル(論理)レコード(ネットワーク・パケットなど)
を完成することが期待されないことを示している。"LAS
T"コマンドは、バッファがロジカル・レコードを完成す
ることが期待されることを示している。reqCountフィー
ルドは転送されるバイト数を指定し、address フィール
ドはシステム・メモリの開始アドレスを指定し、branch
Address フィールドはブランチ・テストが成功したと
き、次のコマンドがフェッチされるアドレスを指定して
いる。これらのフィールドは図8に示されている。Comm
and.key フィールドは、デバイスの「アクセス・ポー
ト」のどれを使用するかを選択するために使用される。
INPUT_MORE, INPUT_LAST, OUTPUT_MORE,
And the OUTPUT_LAST command transfers data between memory and device streams. OUTPUT_MORE and OUTPUT_L
The AST command transfers data from system memory (this data is normally sent to the attached device). The INPUT_MORE and INPUT_LAST commands transfer data (which is usually retrieved from the attached device) to memory. Data chaining is done by using the "MORE" and "LAST" versions of these commands. In the "MORE" command, the current buffer is a logical record (network packet, etc.).
Shows that it is not expected to be completed. "LAS
The T "command indicates that the buffer is expected to complete a logical record. The reqCount field specifies the number of bytes to be transferred, the address field specifies the starting address in system memory, and branch
The Address field specifies the address from which the next command will be fetched if the branch test is successful. These fields are shown in FIG. Comm
The and.key field is used to select which of the device's "access ports" to use.

【0090】従来と同じように、システム・メモリとア
ドレス指定されていないデバイス・ストリームとの間で
転送を行うOUTPUTまたはINPUT コマンドは、Command.ke
y 値にKEY_STREAM0 と指定しおく必要がある。追加のス
トリーム識別を使用すると、制御/ステータス情報のよ
うに、デバイスから得られる他のストリームにアクセス
することが可能である。Command.key 値のKEY_SYSTEMと
KEY_DEVICEは、(オプションの)Data2Ptrレジスタと併
用されて、システム・メモリと、指定された空間との間
で2アドレス転送を行う。
As is conventional, the OUTPUT or INPUT commands that transfer between system memory and unaddressed device streams are Command.ke
y value must be specified as KEY_STREAM0. The additional stream identification may be used to access other streams available from the device, such as control / status information. Command.key value KEY_SYSTEM and
KEY_DEVICE is used in conjunction with the (optional) Data2Ptr register to transfer two addresses between system memory and the designated space.

【0091】64ビット・インプリメンテーションで
は、バッファ・アドレスの上位32ビットにはAddressH
i レジスタの値がロードされ、コマンドの前には、Addr
essHiを該当値にセットするSTORE_QUADコマンドが常に
置かれている。
In the 64-bit implementation, the upper 32 bits of the buffer address are AddressH
The value of the i register is loaded and before the command, Addr
There is always a STORE_QUAD command that sets essHi to the appropriate value.

【0092】STORE_QUADコマンドは32ビット即値をメ
モリにストアする。32ビットのdata32フィールドはデ
ータ値を特定し、アドレス・フィールド(キー・フィー
ルドと併用される)はデスティネーション・アドレスを
指定している。これらのフィールドは図9に示されてい
る。
The STORE_QUAD command stores a 32-bit immediate value in memory. The 32-bit data32 field specifies the data value, and the address field (used in combination with the key field) specifies the destination address. These fields are shown in FIG.

【0093】ブランチを行うかどうかを指定するために
通常使用されるフィールド(Command.b) は、このコマン
ドでは予備であるため、ゼロの値が書かれることになっ
ている。チャネルのオペレーションは、非ゼロ値がこの
フィールドに書かれたときは未定義になっている。
The field (Command.b) that is normally used to specify whether or not to branch is reserved in this command, and therefore a value of zero is to be written. The operation of the channel is undefined when a non-zero value is written in this field.

【0094】reqCountフィールドで有効な値は、1、2
または4だけである。境界合せされ転送だけがサポート
されるので、例えば、カウントが4であると、アドレス
の下位2ビットはゼロであるとみなされ、無視される。
同様に、カウントが2であれば、アドレスの下位ビット
はゼロとみされる。カウントが4バイト未満のときは、
data32の最下位バイトが転送される。
Valid values in the reqCount field are 1, 2
Or only 4. For example, if the count is 4, the lower 2 bits of the address are considered to be zero and are ignored, since only aligned transfers are supported.
Similarly, if the count is 2, the low order bits of the address are considered to be zero. If the count is less than 4 bytes,
The least significant byte of data32 is transferred.

【0095】無効なカウントは、表8に示すように有効
なカウントにマップされる。("x"は「無視してよい」
(don't care)ビットを表している。)
Invalid counts are mapped to valid counts as shown in Table 8. ("X" is "Ignore"
(don't care) bit. )

【0096】[0096]

【表8】 [Table 8]

【0097】STORE_QUADコマンドが実行される間は、Co
mmand.key 値には、即値データのデスティネーション・
アドレスを指定する。key 値には、KEY_REGS、KEY_SYST
EMおよびKEY_DEVICEだけが指定できる。他のkey 値が使
用されたときは、チャネルのオペレーションは未定義で
ある。
While the STORE_QUAD command is being executed, Co
The mmand.key value is the destination of immediate data.
Specify the address. The key value is KEY_REGS, KEY_SYST
Only EM and KEY_DEVICE can be specified. When other key values are used, the channel's operation is undefined.

【0098】LOAD_QUAD コマンドは32ビット即値をメ
モリからロードする。32ビットdata32フィールドはデ
スティネーションであり、アドレス・フィールド(キー
・フィールドと併用される)は、ソース・アドレスを指
定する。これらのフィールドは図10に示されている。
The LOAD_QUAD command loads a 32-bit immediate value from memory. The 32-bit data32 field is the destination and the address field (used in combination with the key field) specifies the source address. These fields are shown in FIG.

【0099】ブランチを行うかどうかを指定するために
通常使用されるフィールド(Command.b) は、このコマン
ドでは予備である。ソフトウェアはこのフィールドにゼ
ロの値を書き込む。非ゼロの値がこのフィールドに書込
まれたときは、チャネルのオペレーションは未定義であ
る。
The field (Command.b) normally used to specify whether to branch is reserved for this command. The software writes a value of zero in this field. When a non-zero value is written to this field, the channel's operation is undefined.

【0100】データ転送のサイズと境界合わせは、STOR
E_QUADコマンドの場合と同じように取り扱われる。
The size and boundary of data transfer are stored in STOR
It is treated the same as for the E_QUAD command.

【0101】LOAD_QUAD コマンドが実行されるときは、
Command.key の値には、即値データのソース・アドレス
を指定する。KEY_REGSで指定できるkey 値はKEY_SYSTEM
とKEY_DEVICEだけである。他のkey 値が使用されたとき
は、チャネルのオペレーションは未定義である。
When the LOAD_QUAD command is executed,
For the value of Command.key, specify the source address of immediate data. The key value that can be specified in KEY_REGS is KEY_SYSTEM
And KEY_DEVICE only. When other key values are used, the channel's operation is undefined.

【0102】NOP コマンドはデータ転送を行わない。し
かし、割込み、ブランチ、または待ちアクションを実行
することを指定するための標準メカニズムを使用するこ
とが可能である。NOP コマンドは図11に示されてい
る。
The NOP command does not transfer data. However, it is possible to use standard mechanisms for specifying to perform an interrupt, branch, or wait action. The NOP command is shown in FIG.

【0103】STOPコマンドはチャネル処理を非活動化す
る。このコマンドはコマンド・リストの最後に置かれ
て、処理すべき以降のコマンドが現在ないことを示して
いる。STOPコマンドの効果はチャネルをアイドルにし、
ChannelStatus.activeビットをクリアするだけである。
STOPコマンドのフォーマットは図12に示されている。
The STOP command deactivates channel processing. This command is placed at the end of the command list, indicating that there are currently no more commands to process. The effect of the STOP command is to idle the channel and
It just clears the ChannelStatus.active bit.
The format of the STOP command is shown in FIG.

【0104】追加のコマンドをアクティブ(活動状態)
のチャネル・プログラムに追加するためには、次のよう
なシーケンスで行う必要がある。1)新しいコマンドを
メモリ内の既存チャネル・プログラムに付加する。2)
STOPコマンドをブランチ・コマンドでオーバライトす
る。3)ChannelControlレジスタのwakeビットを1にセ
ットする。これにより、チャネルは、既存のコマンドを
すでに完了して、アイドルになっていたかどうかに関係
なく、新しいコマンドを処理することが可能になる。
Activate additional commands (active)
To add to the channel program, the following sequence must be done. 1) Add a new command to an existing channel program in memory. 2)
Overwrite the STOP command with a branch command. 3) Set the wake bit in the Channel Control register to 1. This allows the channel to process an existing command and process a new command whether or not it had been idle.

【0105】[0105]

【実施例】図13は、DMAコントローラ100とそこ
に接続されたデバイス(図には102と102′が示さ
れている)の実施例を示すブロック図である。各チャネ
ルは各自の記述子実行ユニット(図には104と10
4′が示されている)を備えている。その他のエレメン
ト106,108,110,112,114および11
6は、DMAロジックと特定のバス122とを結ぶイン
タフェースとして必要になるものである。以下では、図
に示す各ブロックごとに説明する。
FIG. 13 is a block diagram showing an embodiment of a DMA controller 100 and devices (102 and 102 'are shown in the drawing) connected thereto. Each channel has its own descriptor execution unit (104 and 10 in the figure).
4'is shown). Other elements 106, 108, 110, 112, 114 and 11
Reference numeral 6 is required as an interface connecting the DMA logic and the specific bus 122. Below, each block shown in the drawing will be described.

【0106】各記述子実行ユニット(図には104と1
04′が示されている)は、シーケンサ・ステート・マ
シン(図には118と118′が示されている)と、デ
ータ転送エンジン(図には120と120′が示されて
いる)とを含んでいる。以下で詳しく説明するように、
シーケンサ・ステート・マシンは、現在のチャネル・コ
マンドをフェッチし、コマンドを解析(parse) し、コマ
ンドを実行またはデータ転送エンジンへディスパッチ
し、データ転送エンジンによって制御される条件付きア
クション・ビットとコマンドの条件付きアクション・フ
ィールドをテストし、コマンドのステータスを返却する
ことを担当する。
Each descriptor execution unit (104 and 1 in the figure)
04 'is shown) and a sequencer state machine (shown at 118 and 118' in the figure) and a data transfer engine (shown at 120 and 120 'in the figure). Contains. As detailed below,
The sequencer state machine fetches the current channel command, parses the command, executes or dispatches the command to the data transfer engine, and sends conditional action bits and commands controlled by the data transfer engine. Responsible for testing the conditional action field and returning the status of the command.

【0107】以下で詳しく説明するように、データ転送
エンジンはデータ転送コマンド OUTPUT_MORE、 OUTPUT_
LAST、INPUT_MOREまたはINPUT_LASTを実行する。これら
のコマンドは、アドレス指定されていないデータ・スト
リームへまたはから、アドレス指定されたストリームか
らまたはへデータを移動する。典型的には、アドレス指
定されていないストリームは接続されたデバイスへまた
はからであり、アドレス指定されたストリームはシステ
ム・メモリ空間に置かれている32ビット・アドレスで
ある。
As described in detail below, the data transfer engine uses the data transfer commands OUTPUT_MORE, OUTPUT_
Perform LAST, INPUT_MORE or INPUT_LAST. These commands move data to or from an unaddressed data stream, to or from an addressed stream. Typically, the unaddressed stream is to or from the attached device and the addressed stream is a 32-bit address located in the system memory space.

【0108】バス・インタフェース・マスタ・ステート
・マシン116はシーケンサ・ステート・マシンとデー
タ転送エンジンから転送要求を受け取る。転送要求に
は、実行すべき要求のサイズ、方向、およびタイプに関
する情報が含まれている。転送要求を受け取ると、バス
・インタフェース・マスタ・ステート・マシンはバス・
ステート・マシン106と協力し合って、必要とするバ
ス・サイクルの仲裁を行って実行する。転送要求が完了
すると、バス・インタフェース・マスタ・ステート・マ
シンは、要求を肯定応答(acknowledge) することにより
トランザクションの完了を通知する。
The bus interface master state machine 116 receives transfer requests from the sequencer state machine and data transfer engine. The transfer request contains information about the size, direction, and type of request to perform. When the transfer request is received, the bus interface master state machine
Cooperate with the state machine 106 to arbitrate and execute the required bus cycles. When the transfer request is complete, the bus interface master state machine signals the completion of the transaction by acknowledging the request.

【0109】バス・インタフェース・マスタ・アービタ
114は仲裁を行い、すべてのシーケンサ・ステート・
マシンとデータ転送エンジンからの転送要求と修飾信号
(qualifying signal) を1つの要求に多重化し、この要
求をバス・インタフェース・マスタ・ステート・マシン
116に提示する。また、バス・インタフェース・マス
タ・アービタ114は、バス・インタフェース・マスタ
・ステート・マシンから現在のリクエスタ(要求側)へ
の転送肯定応答をデマルチプレクスする。このように分
割して設計したのは、バス・インタフェース・マスタ・
ステート・マシンの設計が要求側チャネルの数に左右さ
れないようにするためである。
The bus interface master arbiter 114 arbitrates and handles all sequencer state
Transfer requests and modifier signals from machines and data transfer engines
The qualifying signal is multiplexed into one request and this request is presented to the bus interface master state machine 116. The bus interface master arbiter 114 also demultiplexes the transfer acknowledgment from the bus interface master state machine to the current requester (requestor). The bus interface master
This is so that the state machine design does not depend on the number of requesting channels.

【0110】バス・ステート・マシン106は、システ
ム・バスの通知プロトコル(signaling protocol)を制御
する。なお、システム・バスとしては、例えば、周辺コ
ンポーネント相互接続(Peripheral Component Intercon
nect - PCI) バスにすることが可能である。詳しいこと
は、「PCIローカル・バス仕様 (PCI Local Bus Spec
ifications) 」改定版2.0 に記載されている。
The bus state machine 106 controls the signaling protocol of the system bus. The system bus may be, for example, a peripheral component interconnect (Peripheral Component Intercon
nect-PCI) Can be a bus. For more information, see "PCI Local Bus Spec.
ifications) ”, revised version 2.0.

【0111】割込みモジュール108は、4つのレジス
タと関連の制御ロジックを収めている。割込みは、DM
Aチャネル割込み、デバイス割込み、および外部割込み
の3タイプがサポートされる。DMAチャネル割込み
は、記述子またはコマンドに入っている割込み条件フィ
ールドによって制御される(上述した説明を参照)。デ
バイス割込みは、シリアル通信コントローラなどの、接
続されたデバイスによって引き起こされる。外部割込み
は、他のオンボードPCIデバイスからのスロット割込
みのように、DMAコントローラの入出力機能と無関係
の外部ソースから引き起こされる。
The interrupt module 108 contains four registers and associated control logic. Interrupt is DM
Three types are supported: A channel interrupts, device interrupts, and external interrupts. DMA channel interrupts are controlled by the interrupt condition field contained in the descriptor or command (see description above). Device interrupts are triggered by connected devices, such as serial communication controllers. External interrupts, like slot interrupts from other onboard PCI devices, are triggered from external sources that are independent of the DMA controller's I / O functions.

【0112】バス・インタフェース・ユニット・スレー
ブ・ステート・マシン・モジュール110は、バス・ス
テート・マシン・モジュール106と共に、このASI
CのターゲットとなるPCIスレーブ要求を引き受け
る。詳しいことは、上記の「PCIローカル・バス仕
様」改定版2.0 に記載されている。これらの要求は2つ
のカテゴリに分類される。構成サイクル(configuration
cycle) とメモリ・サイクルである。構成サイクルは、
バス・インタフェース・ユニット・スレーブ・ステート
・マシン・モジュールによって受け付けられ、モジュー
ルに収められた構成レジスタをアクセスする。メモリ・
サイクルはバス・インタフェース・ユニット・スレーブ
・アドレス・デコーダ・モジュール112に渡され、構
成内の他の場所に置かれたレジスタをターゲットとす
る。
The bus interface unit slave state machine module 110, along with the bus state machine module 106
Undertake the PCI slave request targeted by C. For details, refer to the above-mentioned “PCI local bus specification” revised version 2.0. These requirements fall into two categories. Configuration cycle
cycle) and memory cycles. The composition cycle is
Accepted by the bus interface unit slave state machine module to access the configuration registers contained in the module. memory·
The cycle is passed to the bus interface unit slave address decoder module 112 and targets registers located elsewhere in the configuration.

【0113】記述子のキー・フィールドにKEY_DEVICEが
指定されていると、DMAコントローラは、メモリ・バ
ス・サイクルではなく入出力バス・サイクルを開始す
る。
When KEY--DEVICE is specified in the key field of the descriptor, the DMA controller starts an I / O bus cycle instead of a memory bus cycle.

【0114】バス・インタフェース・ユニット・スレー
ブ・ステート・マシン・モジュール110は要求をメモ
リ・サイクルとしてPCIバス122から受け取り、バ
ス・インタフェース・ユニット・スレーブ・アドレス・
デコーダ・モジュール112は、バス・インタフェース
・ユニット・スレーブ・ステート・マシン・モジュール
110から受け取った要求をデコードし、デマルチプレ
クスする。要求がバス・インタフェース・ユニット・ス
レーブ・ステート・マシン・モジュール110から送ら
れてくると、関連するアドレスがデコードされ、その要
求は該当のスレーブへ転送される。図13のブロック図
において、要求のターゲットは、シーケンサ・ステート
・マシン、データ転送エンジン、または割込みモジュー
ルに置かれているレジスタにすることが可能である。バ
ス・インタフェース・ユニット・スレーブ・アドレス・
デコーダ・モジュール112は、該当のスレーブから返
されてきた肯定応答と読取りデータ信号も多重化して、
それをバス・インタフェース・ユニット・スレーブ・ス
テート・マシン・モジュールに提示する。
The bus interface unit slave state machine module 110 receives the request as a memory cycle from the PCI bus 122 and sends the request to the bus interface unit slave address
The decoder module 112 decodes and demultiplexes the request received from the bus interface unit slave state machine module 110. When a request comes from the bus interface unit slave state machine module 110, the associated address is decoded and the request is forwarded to the appropriate slave. In the block diagram of FIG. 13, the target of the request can be a sequencer state machine, a data transfer engine, or a register located in the interrupt module. Bus interface unit slave address
The decoder module 112 also multiplexes the acknowledge and read data signals returned from the slave in question.
Present it to the bus interface unit slave state machine module.

【0115】コマンドをフェッチすると、シーケンサ・
ステート・マシンはそのコマンドを「解析」する。コマ
ンドがデータ転送コマンドでなければ(つまり、コマン
ドがSTORE_QUAD、NOP またはSTOPコマンドであれば)、
シーケンサ・ステート・マシンはそのコマンドを実行す
ることを担当する。コマンドがデータ転送コマンド(OUT
PUT_MORE、OUTPUT_LAST 、INPUT_MORE、またはINPUT_LA
ST) であれば、シーケンサ・ステート・マシンは制御を
関連のデータ転送エンジンに引き渡す。
When a command is fetched, the sequencer
The state machine "parses" the command. If the command is not a data transfer command (that is, if the command is a STORE_QUAD, NOP or STOP command),
The sequencer state machine is responsible for executing that command. Command is a data transfer command (OUT
PUT_MORE, OUTPUT_LAST, INPUT_MORE, or INPUT_LA
ST), the sequencer state machine hands control to the associated data transfer engine.

【0116】コマンドの実行が完了すると(どのコマン
ドであるかに応じて、シーケンサ・ステート・マシンま
たはデータ転送エンジンによって)、シーケンサ・ステ
ート・マシンは現在のコマンドの条件付きフィールドを
テストする。最初にテストされるフィールドはwait(待
ち)フィールドである。シーケンサ・ステート・マシン
は、待ち条件のテスト結果が偽になるまでは、現在のス
テートから先に進むことはしない。待ち条件のテスト結
果が偽になると、シーケンサ・ステート・マシンは現在
のコマンドに対してステータスを書き戻す。ステータス
情報は16バト記述子(コマンド)構造の最後の4バイ
トに書き戻される。ステータス書込みが完了すると、シ
ーケンサ・ステート・マシンは、次に、現在のコマンド
に対するブランチ条件をテストする。ブランチ条件のテ
スト結果が偽であると、シーケンサ・ステート・マシン
はコマンド・ポインタ・レジスタの値を16だけインク
リメントして、次の順番の記述子を指すようにする。ブ
ランチ条件のテスト結果が真であると、シーケンサ・ス
テート・マシンは現在のコマンドのブランチ・アドレス
を読み取り、そのアドレスをコマンド・ポインタ・レジ
スタに書き込む。最後にテストされる条件は割込み条件
である。割込み条件のテスト結果が真であれば、シーケ
ンサ・ステート・マシンは、そのチャネルのDMAチャ
ネル割込みをセットするように割込みモジュールに通知
する。
When execution of the command is complete (either by the sequencer state machine or the data transfer engine, depending on which command it is), the sequencer state machine tests the conditional field of the current command. The first field tested is the wait field. The sequencer state machine does not advance from the current state until the wait condition test result is false. When the wait test results false, the sequencer state machine writes back the status for the current command. The status information is written back to the last 4 bytes of the 16-bit descriptor (command) structure. When the status write is complete, the sequencer state machine then tests the branch condition for the current command. If the branch condition test is false, the sequencer state machine increments the value of the command pointer register by 16 to point to the next descriptor in the sequence. If the branch condition test is true, the sequencer state machine reads the branch address of the current command and writes that address to the command pointer register. The last condition tested is the interrupt condition. If the test result of the interrupt condition is true, the sequencer state machine notifies the interrupt module to set the DMA channel interrupt for that channel.

【0117】シーケンサ・ステート・マシンの動作につ
いて、図14と図15のフローチャートを参照して説明
する。DMAチャネルはリセット状態S124で起動
し、ソフトウェアがChannelControlレジスタの"Run" ビ
ットに「1」を書くと、動作するようにセットされる。
このビットは図14のステップS126でテストされ
る。これに応答し、シーケンサは、フェッチ・ステップ
S128とフェッチ完了テストS130で示すように、
CommandPtrレジスタが指している記述子をフェッチす
る。コマンドのフェッチしている間にエラーが発生した
かどうかがテストS132でテストされ、エラーが発生
していれば、制御はステータス書込みステップS146
へ渡される(図15)。エラーが発生していなければ、
現在のコマンドがステップS134で示すように実行さ
れる。コマンド実行が完了したことをテストS136が
示したあとで、エラーの有無がテストS138でテスト
される。この場合も、エラーが発生していれば、制御は
ステータス書込みステップS146へ渡される。エラー
が発生していなければ、待ち条件がステップS140で
テストされ、run ビットがテストS142でテストされ
る。run ビットがリセットされていれば、制御はステー
タス書込みステップS146へ渡される。そうでなけれ
ば、待ち完了テストS144が行われ、制御権は、テス
ト結果に応じてテスト待ち条件ステップS140または
ステータス書込みステップS146へ渡される。ステー
タスがステータス完了テストS148で示すように書か
れると、runビットがテストS150でテストされる。r
un ビットがリセットされていれば、チャネルはリセッ
ト状態S124になる。そうでなければ、重大デバイス
・エラーの有無がテストS152でテストされる。エラ
ーが発生していれば、割込みがステップS154で引き
起こされた後、チャネルはデッド状態S166に入る。
エラーがなければ、割込み条件がステップS158でテ
ストされ、真であれば、割込みがステップS156で生
成される。ブランチ条件はテストS160でテストさ
れ、コマンド・ポインタは、テスト結果に応じて16だ
けインクリメントされるか(ステップS164)、ブラ
ンチ・アドレスにセットされる(ステップS162)。
どちらの場合も、フェッチ・ステップS128が次に実
行される。
The operation of the sequencer state machine will be described with reference to the flow charts of FIGS. 14 and 15. The DMA channel starts in reset state S124 and is set to run when the software writes a "1" to the "Run" bit of the ChannelControl register.
This bit is tested in step S126 of FIG. In response, the sequencer, as indicated by fetch step S128 and fetch completion test S130,
Fetch the descriptor pointed to by the CommandPtr register. Whether or not an error has occurred while fetching the command is tested in test S132, and if an error has occurred, control is performed in status writing step S146.
(Fig. 15). If there are no errors,
The current command is executed as shown in step S134. After test S136 indicates that command execution is complete, a test S138 tests for the presence of errors. Also in this case, if an error has occurred, control is passed to the status writing step S146. If no error has occurred, the wait condition is tested at step S140 and the run bit is tested at test S142. If the run bit is reset, control is passed to the write status step S146. Otherwise, the waiting completion test S144 is performed, and the control right is passed to the test waiting condition step S140 or the status writing step S146 depending on the test result. Once the status is written as shown in status completion test S148, the run bit is tested in test S150. r
If the un bit has been reset, the channel is in reset state S124. If not, the presence or absence of a serious device error is tested in test S152. If an error has occurred, the channel enters dead state S166 after the interrupt is triggered in step S154.
If there are no errors, the interrupt condition is tested in step S158, and if true, an interrupt is generated in step S156. The branch condition is tested in test S160, and the command pointer is incremented by 16 according to the test result (step S164) or set to the branch address (step S162).
In either case, the fetch step S128 is executed next.

【0118】チャネルがデッド状態にあるとき、run ビ
ットがテストS168でテストされる。run ビットがリ
セットされているときは、チャネルはリセット状態S1
24になる。
When the channel is dead, the run bit is tested in test S168. Channel is in reset state S1 when run bit is reset
24.

【0119】キー・フィールドの取り得るデータ・パス
(経路)選択は図16と図17に示されているが、これ
らの図には、入出力デバイス・インタフェースまでの異
なるデータ転送エンジン、およびバス・インタフェース
までの同じシーケンサ・ステート・マシンが示されてい
る。図16と図17は、キー・フィールド178を有す
るコマンド・バッファ176を備えたシーケンサ・ステ
ート・マシン170、キー・フィールド182を有する
コマンド・バッファ180とFIFO186とを備えた
データ転送エンジン172、および入出力デバイス17
4を示すブロック図である。図16と図17のどちらの
場合も、LOAD_QUAD などのコマンドはシーケンサ・ステ
ート・マシン170によって実行される。データはライ
ン206を経由して、バス・インタフェース(図示せ
ず)へ、または、から転送され、ライン204はアクセ
スすべきアドレス空間を指定するために使用される。組
合せ論理ブロック(combinational logic block) 184
は、キー・フィールド178の符号化(encoding)をバス
・インタフェースで使用される符号化に変換するために
使用できる(例えば、選択入出力スペースまたは構成サ
イクル)。
The possible data path selections for the key fields are shown in FIGS. 16 and 17, which show different data transfer engines to the I / O device interface and the bus The same sequencer state machine up to the interface is shown. 16 and 17 show a sequencer state machine 170 with a command buffer 176 having a key field 178, a data transfer engine 172 having a command buffer 180 with a key field 182 and a FIFO 186, and an input buffer 172. Output device 17
4 is a block diagram showing FIG. 16 and 17, commands such as LOAD_QUAD are executed by the sequencer state machine 170. Data is transferred to or from the bus interface (not shown) via line 206 and line 204 is used to specify the address space to be accessed. Combinational logic block 184
Can be used to convert the encoding of the key field 178 into the encoding used by the bus interface (eg, selected I / O space or configuration cycle).

【0120】INPUT_MOREなどのコマンドはデータ転送エ
ンジン172によって実行される。実行されるコマンド
の少なくとも一部は、ライン202を経由してデータ転
送エンジンのコマンド・バッファ180に書かれる。F
IFO186はライン200を通してバス・インタフェ
ースに接続されている。図16において、デバイス17
4はすべてのストリーム用の単一のデータ入出力と、特
定のストリームを選択するための別の入力をもってい
る。FIFO186はライン188を通してデータ入出
力に接続され、キー・フィールド182内のストリーム
情報はライン190を経由してデバイス174に伝達さ
れる。図17において、デバイス174は、別々のスト
リーム用の別々の入出力をもち、ライン194と196
に接続されている。FIFO186は、ライン198を
通してキー・フィールド182の値によって制御される
マルチプレクサ/デマルチプレクサ192を介してライ
ン194と196に接続されている。
Commands such as INPUT_MORE are executed by the data transfer engine 172. At least a portion of the command to be executed is written to the data transfer engine command buffer 180 via line 202. F
IFO 186 is connected to the bus interface through line 200. In FIG. 16, the device 17
4 has a single data input / output for all streams and another input for selecting a particular stream. The FIFO 186 is connected to the data input / output via line 188, and the stream information in the key field 182 is transmitted to the device 174 via line 190. In FIG. 17, device 174 has separate inputs and outputs for different streams and has lines 194 and 196.
It is connected to the. FIFO 186 is connected to lines 194 and 196 via multiplexer / demultiplexer 192 which is controlled by the value of key field 182 through line 198.

【0121】図18は、条件付き待ち、条件付き割込
み、および条件付きブランチの条件付きアクション許可
(enabling)ビット258,260および262のそれぞ
れを判断するための実施例を示している。図示のよう
に、シーケンサ・ステート・マシン170のコマンド・
バッファ176は、条件付きアクション・フィールドCo
mmand.b 208、Command.i 210およびCommand.w 2
12をもっている。データ転送エンジン172には、上
述したように、ChannelStatus レジスタのうち、条件付
きアクションの実行に影響を及ぼすビットs7..s0を含ん
でいる部分214を少なくとも含めることが可能であ
る。また、データ転送エンジン172には、マスク・フ
ィールド218と値フィールド220をもつWaitSelect
条件レジスタ216、マスク・フィールド232と値フ
ィールド234をもつInterruptSelect条件レジスタ2
30およびマスク・フィールド246と値フィールド2
48をもつBranchselectレジスタ244を含めることも
可能である。
FIG. 18 illustrates conditional waits, conditional interrupts, and conditional action permits for conditional branches.
An example is shown for determining each of the (enabling) bits 258, 260 and 262. As shown, the sequencer state machine 170 command
Buffer 176 contains conditional action field Co
mmand.b 208, Command.i 210 and Command.w 2
I have twelve. The data transfer engine 172 may include at least the portion 214 of the ChannelStatus register that contains the bits s7..s0 that affect the execution of the conditional action, as described above. The data transfer engine 172 also has a WaitSelect with a mask field 218 and a value field 220.
InterruptSelect condition register 2 with condition register 216, mask field 232 and value field 234
30 and mask field 246 and value field 2
It is also possible to include a Branchselect register 244 with 48.

【0122】ChannelStatus レジスタ214のビットs
7..s0の値およびWaitSelect条件レジスタ216のマス
ク・フィールド218の値は、ANDゲート・アレイ2
22に入力され、その出力は(ChannelStatus.s7..s0 &
WaitSelect.mask)である。WaitSelect条件レジスタ21
6のマスク・フィールド218の値およびWaitSelect条
件レジスタ216の値フィールド220の値はANDゲ
ート・アレイ224に入力され、その出力は(WaitSelec
t.value & WaitSelect.mask)である。アレイ222と2
24の出力はコンパレータ226に入力され、その1ビ
ット出力は(ChannelStatus.s7..s0 & WaitSelect.mask)
==(WaitSelect.value & WaitSelect.mask)である。この
出力は、Command.w フィールド212の2ビットと一緒
に、シーケンサ・ステート・マシン170内の組合せ論
理ブロック228に印加される。論理ブロック228の
真理値表は表9に示されている。
Bit s of ChannelStatus register 214
The value of 7..s0 and the value of the mask field 218 of the WaitSelect condition register 216 are the AND gate array 2
22 and the output is (ChannelStatus.s7..s0 &
WaitSelect.mask). WaitSelect condition register 21
The value of the mask field 218 of 6 and the value of the value field 220 of the WaitSelect condition register 216 are input to the AND gate array 224, whose output is (WaitSelec
t.value & WaitSelect.mask). Arrays 222 and 2
The output of 24 is input to the comparator 226, and its 1-bit output is (ChannelStatus.s7..s0 & WaitSelect.mask)
== (WaitSelect.value & WaitSelect.mask). This output, along with the 2 bits of the Command.w field 212, is applied to the combinatorial logic block 228 in the sequencer state machine 170. The truth table for logic block 228 is shown in Table 9.

【0123】[0123]

【表9】 [Table 9]

【0124】ビット260と262は同じように得ら
れ、エレメント216、218、220、222、22
4、226および228はそれぞれエレメント230、
232、234、236、238、240、および24
2に対応し、また、それぞれエレメント244、24
6、248、250、252、254および256に対
応している。
Bits 260 and 262 are obtained in the same way and elements 216, 218, 220, 222, 22 are included.
4, 226 and 228 are elements 230,
232, 234, 236, 238, 240, and 24
2 corresponding to elements 244 and 24, respectively.
6, 248, 250, 252, 254 and 256.

【0125】図19は、ChannelStatus レジスタ268
の実施例を示す図である。このレジスタはChannelStatu
s レジスタのアドレスに対応するライン270を使用し
て読み取られ、ChannelControlアドレスのデータ・フィ
ールドに対応するライン266を使用して、ChannelCon
trolアドレスのマスク・フィールドに対応するライン2
64によって許可されたビットに書き込まれる。
FIG. 19 shows the ChannelStatus register 268.
It is a figure which shows the Example of. This register is ChannelStatu
It is read using line 270, which corresponds to the address of the s register, and line 266, which corresponds to the data field of the ChannelControl address.
Line 2 corresponding to the mask field of the trol address
Written to the bits allowed by 64.

【0126】[0126]

【発明の効果】以上を要約すると、DMA転送期間に代
替デバイス・ストリームとメモリ・アドレス空間を指定
するための装置と方法について説明してきた。本発明に
よれば、2つ以上のデータ・ストリームをもつ入出力デ
バイスと、あるシステム・メモリ・バッファから同一ま
たは異なるアドレス空間内の別のロケーションへのデー
タ転送をプロセッサの介入なしで取り扱うことができ
る。
In summary, an apparatus and method for specifying an alternate device stream and memory address space during a DMA transfer has been described. According to the present invention, it is possible to handle I / O devices with more than one data stream and data transfers from one system memory buffer to another location in the same or different address space without processor intervention. it can.

【0127】好適実施例を参照して本発明を説明してき
たが、本発明は図示および上述した実施例に限定される
ものではなく、本発明の範囲は請求項に明確化されてい
る通りである。
Although the invention has been described with reference to the preferred embodiments, it is not limited to the embodiments shown and described above, but the scope of the invention is as defined in the claims. is there.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明によるDMAコントローラを利用するシ
ステムを示す概略ブロック図である。
FIG. 1 is a schematic block diagram illustrating a system that utilizes a DMA controller according to the present invention.

【図2】本発明によるDMAコントローラを示す概略ブ
ロック図である。
FIG. 2 is a schematic block diagram showing a DMA controller according to the present invention.

【図3】ChannelStatus レジスタのフォーマットを示す
図である。
FIG. 3 is a diagram showing a format of a ChannelStatus register.

【図4】ChannelControlレジスタのフォーマットを示す
図である。
FIG. 4 is a diagram showing a format of a Channel Control register.

【図5】InterruptSelect 、BranchSelectおよびWaitSe
lect条件レジスタのフォーマットを示す図である。
[Fig.5] InterruptSelect, BranchSelect and WaitSe
It is a figure which shows the format of a lect condition register.

【図6】コマンド・エントリのフォーマットを示す図で
ある。
FIG. 6 is a diagram showing a format of a command entry.

【図7】データ・ポート選択機能のオペレーションを示
す概略ブロック図である。
FIG. 7 is a schematic block diagram illustrating the operation of the data port selection function.

【図8】INPUT_MORE、INPUT_LAST、OUTPUT_MORE および
OUTPUT_LAST コマンドのフォーマットを示す図である。
[Figure 8] INPUT_MORE, INPUT_LAST, OUTPUT_MORE and
It is a figure which shows the format of OUTPUT_LAST command.

【図9】STORE_QUADコマンドのフォーマットを示す図で
ある。
FIG. 9 is a diagram showing a format of a STORE_QUAD command.

【図10】LOAD_QUAD コマンドのフォーマットを示す図
である。
FIG. 10 is a diagram showing a format of a LOAD_QUAD command.

【図11】NOP コマンドのフォーマットを示す図であ
る。
FIG. 11 is a diagram showing a format of a NOP command.

【図12】STOPコマンドのフォーマットを示す図であ
る。
FIG. 12 is a diagram showing a format of a STOP command.

【図13】本発明によるDMAコントローラの実施例を
示す概略ブロック図である。
FIG. 13 is a schematic block diagram showing an embodiment of a DMA controller according to the present invention.

【図14】図13のシーケンサ・ステート・マシンのオ
ペレーションのフローチャートを示す図である。
FIG. 14 shows a flowchart of the operation of the sequencer state machine of FIG.

【図15】図13のシーケンサ・ステート・マシンのオ
ペレーションのフローチャートを示す図である。
FIG. 15 shows a flowchart of the operation of the sequencer state machine of FIG.

【図16】図13のDMAコントローラを実現するため
にシーケンサ・ステート・マシンとデータ転送エンジン
を使用したデータ・ポート選択機能の実施例を示す概略
ブロック図である。
16 is a schematic block diagram illustrating an embodiment of a data port selection function using a sequencer state machine and a data transfer engine to implement the DMA controller of FIG.

【図17】図13のDMAコントローラを実現するのに
適したシーケンサ・ステート・マシンとデータ転送エン
ジンを使用したデータ・ポート選択エンジンの別実施例
を示す概略ブロック図である。
17 is a schematic block diagram of another embodiment of a data port selection engine using a sequencer state machine and a data transfer engine suitable for implementing the DMA controller of FIG.

【図18】本発明の条件付きアクション機能の実施例を
示す概略ブロック図である。
FIG. 18 is a schematic block diagram showing an embodiment of a conditional action function of the present invention.

【図19】本発明の制御レジスタのマスク付き書込み機
能の実施例を示す概略ブロック図である。
FIG. 19 is a schematic block diagram showing an embodiment of a write function with a mask of the control register of the present invention.

【符号の説明】[Explanation of symbols]

30 システム 32 ホスト・プロセッサ 34 システム・メモリ 36 DMAコントローラ 38 入出力デバイス 40 コマンド記述子リスト・スペース 44 バッファ 46 バッファ 74 システム・バス 76 データ転送エンジン 82 CommandPtrレジスタ 84 extendState レジスタ 86 addPtrレジスタ 88 count レジスタ 100 DMAコントローラ 102 接続デバイス 104 記述子実行ユニット 106 バス・ステート・マシン 108 割込みモジュール 110 バス・インタフェース・ユニット・スレーブ・
ステート・マシン・モジュール 112 バス・インタフェース・ユニット・スレーブ・
アドレス・デコーダ・モジュール 114 バス・インタフェース・マスタ・アービタ 116 バス・インタフェース・マスタ・ステート・マ
シン 118 シーケンサ・ステート・マシン 120 データ転送エンジン 122 PCIバス 170 シーケンサ・ステート・マシン 172 データ転送エンジン 174 入出力デバイス 176 コマンド・バッファ 178 キー・フィールド 180 コマンド・バッファ 182 キー・フィールド 184 組合せ論理ブロック 186 FIFO
30 system 32 host processor 34 system memory 36 DMA controller 38 input / output device 40 command descriptor list space 44 buffer 46 buffer 74 system bus 76 data transfer engine 82 CommandPtr register 84 extendState register 86 addPtr register 88 count register 100 DMA Controller 102 connection device 104 descriptor execution unit 106 bus state machine 108 interrupt module 110 bus interface unit slave
State machine module 112 Bus interface unit slave
Address decoder module 114 Bus interface master arbiter 116 Bus interface master state machine 118 Sequencer state machine 120 Data transfer engine 122 PCI bus 170 Sequencer state machine 172 Data transfer engine 174 Input / output device 176 Command Buffer 178 Key Field 180 Command Buffer 182 Key Field 184 Combinatorial Logic Block 186 FIFO

───────────────────────────────────────────────────── フロントページの続き (71)出願人 595167203 1 Infinite Loop,Cup ertino California 95014 U.S.A. (72)発明者 デイヴィッド ヴイ. ジェイムス アメリカ合衆国 94306 カリフォルニア 州 パロ アルト サウス コート 3180 (72)発明者 ブルース イー. エクスタイン アメリカ合衆国 95014 カリフォルニア 州 クパチーノ ノーヴェンバー ドライ ブ 1091 ─────────────────────────────────────────────────── ─── Continuation of front page (71) Applicant 595167203 1 Infinite Loop, Cupertino California 95014 U. S. A. (72) Inventor David V.I. James United States 94306 Palo Alto South Court, California 3180 (72) Inventor Bruce E. Ecstein USA 95014 Cupertino California Drive 1091 California

Claims (12)

【特許請求の範囲】[Claims] 【請求項1】 少なくとも1つのチャネルを備えたダイ
レクト・メモリ・アクセス(DMA)コントローラであ
って、 キー・フィールドをもつ少なくとも1つのコマンド・バ
ッファと、 前記少なくとも1つのコマンド・バッファの前記キー・
フィールドのビットに応答して、少なくともその1つが
第1データ・ストリームである複数の選択可能なデータ
・ソースまたはデスティネーションの1つを選択する手
段とを含むことを特徴とするDMAコントローラ。
1. A direct memory access (DMA) controller with at least one channel, at least one command buffer having a key field; and the key of the at least one command buffer.
Means for selecting one of a plurality of selectable data sources or destinations, at least one of which is the first data stream, in response to the bits of the field.
【請求項2】 前記選択する手段は入出力デバイスとの
接続のための出力をもつエンコーダを含むことを特徴と
する請求項1に記載のDMAコントローラ。
2. The DMA controller according to claim 1, wherein the selecting means includes an encoder having an output for connection with an input / output device.
【請求項3】 前記選択する手段は前記キー・フィール
ドを入出力デバイスに接続するためのライン群を含むこ
とを特徴とする請求項1に記載のDMAコントローラ。
3. The DMA controller according to claim 1, wherein the selecting means includes a group of lines for connecting the key field to an input / output device.
【請求項4】 前記選択する手段は、その出力が前記ビ
ットによって選択され、その入力がシステム・メモリか
らデータを受信するデマルチプレクサを含むことを特徴
とする請求項1に記載のDMAコントローラ。
4. The DMA controller of claim 1 wherein said means for selecting comprises a demultiplexer whose output is selected by said bit and whose input receives data from system memory.
【請求項5】 前記選択する手段は、その入力が前記ビ
ットによって選択され、その出力がデータをシステム・
メモリへ送信するマルチプレクサを含むことを特徴とす
る請求項1に記載のDMAコントローラ。
5. The means for selecting comprises: an input of which is selected by the bit, and an output of which is system data.
The DMA controller of claim 1, including a multiplexer for transmitting to a memory.
【請求項6】 前記選択可能なデータ・ソースまたはデ
スティネーションの少なくとも1つは第2データ・スト
リームであることを特徴とする請求項1、2、3、4ま
たは5に記載のDMAコントローラ。
6. The DMA controller of claim 1, 2, 3, 4 or 5, wherein at least one of the selectable data source or destination is a second data stream.
【請求項7】 前記選択可能なデータ・ソースまたはデ
スティネーションの少なくとも1つはアドレス空間をも
ち、該アドレス空間内でコマンドによってアクセスされ
るアドレスは、該コマンドによってセットされないレジ
スタによって指定されることを特徴とする請求項1、
2、3、4または5に記載のDMAコントローラ。
7. At least one of the selectable data source or destination has an address space, and an address accessed by a command in the address space is specified by a register not set by the command. Claim 1, characterized in that
The DMA controller according to 2, 3, 4 or 5.
【請求項8】 前記選択可能なデータ・ソースまたはデ
スティネーションの少なくとも1つはアドレス空間をも
ち、該アドレス空間内でコマンドによってアクセスされ
るアドレスは、該コマンドによってセットされないレジ
スタによって指定されることを特徴とする請求項6に記
載のDMAコントローラ。
8. At least one of the selectable data sources or destinations has an address space, and an address accessed by a command within the address space is specified by a register not set by the command. The DMA controller according to claim 6, which is characterized in that:
【請求項9】 DMAコントローラのチャネルを操作す
る方法であって、 キー・フィールドをもつコマンドをフェッチし、 システム・メモリと、少なくともその1つが第1データ
・ストリームである複数の選択可能なデータ・ソースま
たはデスティネーションの1つとの間でデータを転送す
ることにより、前記コマンドを実行することを含むこと
を特徴とする方法。
9. A method of operating a channel of a DMA controller, comprising fetching a command having a key field, system memory and a plurality of selectable data, at least one of which is a first data stream. A method comprising executing the command by transferring data to or from one of a source or a destination.
【請求項10】 前記選択可能なデータ・ソースまたは
デスティネーションの少なくとも1つは第2データ・ス
トリームであることを特徴とする請求項9に記載の方
法。
10. The method of claim 9, wherein at least one of the selectable data source or destination is a second data stream.
【請求項11】 前記選択可能なデータ・ソースまたは
デスティネーションの少なくとも1つはアドレス空間を
もち、該アドレス空間内でアクセスされるアドレスは、
前記フェッチ・ステップの前にセットアップされていた
レジスタによって指定されることを特徴とする請求項9
に記載の方法。
11. At least one of the selectable data sources or destinations has an address space, and addresses accessed within the address space are:
10. Designated by a register that was set up before the fetch step.
The method described in.
【請求項12】 前記選択可能なデータ・ソースまたは
デスティネーションの少なくとも1つはアドレス空間を
もち、該アドレス空間内でアクセスされるアドレスは、
前記フェッチ・ステップの前にセットアップされていた
レジスタによって指定されることを特徴とする請求項1
0に記載の方法。
12. At least one of the selectable data sources or destinations has an address space, and addresses accessed within the address space are:
2. Designated by a register that was set up before the fetch step.
The method described in 0.
JP29867995A 1994-11-16 1995-11-16 Dma controller with mechanism for designation of substitute device stream and memory space in dma transfer period Withdrawn JPH08235102A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US34024994A 1994-11-16 1994-11-16
US340249 1999-07-01

Publications (1)

Publication Number Publication Date
JPH08235102A true JPH08235102A (en) 1996-09-13

Family

ID=23332529

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29867995A Withdrawn JPH08235102A (en) 1994-11-16 1995-11-16 Dma controller with mechanism for designation of substitute device stream and memory space in dma transfer period

Country Status (1)

Country Link
JP (1) JPH08235102A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013515982A (en) * 2010-06-24 2013-05-09 株式会社日立製作所 Data transfer system and data transfer method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013515982A (en) * 2010-06-24 2013-05-09 株式会社日立製作所 Data transfer system and data transfer method

Similar Documents

Publication Publication Date Title
US5717952A (en) DMA controller with mechanism for conditional action under control of status register, prespecified parameters, and condition field of channel command
US5740466A (en) Flexible processor-driven SCSI controller with buffer memory and local processor memory coupled via separate buses
US6088740A (en) Command queuing system for a hardware accelerated command interpreter engine
US6874054B2 (en) Direct memory access controller system with message-based programming
US5918028A (en) Apparatus and method for smart host bus adapter for personal computer cards
EP0194462A2 (en) System bus means for inter-processor communication
US5038275A (en) Status transfer structure within a data processing system with status read indication
JPH04290150A (en) Device and method for controlling bidirectional fifo as interface between two buses in multi-task system
JPH09160861A (en) Information-processing system for transfer of command block to local processing side without intervention of local processor
US5210828A (en) Multiprocessing system with interprocessor communications facility
JPS63253459A (en) High performance interface and achievement thereof
JPH0236969B2 (en)
JPH11338734A (en) Computer system and method for operating the computer system
WO2008065045A2 (en) Dmac to handle transfers of unknown lengths data
KR100721091B1 (en) Flexible general-purpose input/output system
JPH09160862A (en) Status processing system for transfer of data block between local side and host side
US6222846B1 (en) Method and system for employing a non-masking interrupt as an input-output processor interrupt
JPH07105126A (en) System and method for interface
JP2000010818A (en) Computer system and method for operating the computer system
JP2000207247A (en) Computer system, and method for operating the computer system
US8386648B1 (en) Hardware support system for accelerated disk I/O
JPH0997184A (en) Information-processing system inclusive of efficient interrupt handling
US7334056B2 (en) Scalable architecture for context execution
JPH0316660B2 (en)
JP3417463B2 (en) Method and system for handling interrupt requests

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20030204