ADMA: Difference between revisions
[unchecked revision] | [unchecked revision] |
m (→See Also: adding related articles / removing orphaned pages) |
(Flesh out this article out a bit, remove some commentary and other inaccuracies, link to latest draft. Still not perfect.) |
||
Line 1:
ADMA is a feature of some PCI
An ADMA capable controller maps the standard ATA IO and ADMA registers at a 64-bit or 32-bit address (..PCI BAR 4/5, 20h-27h). The size of this area is 1024 bytes.
▲ADMA is a feature of some PCI disk controllers, that eliminates the need for the driver to send the READ and WRITE commands to the drive. The Bus Mastering Controller sets up <b>both</b> sides of every DMA transfer, and initiates the transfer itself. All the driver needs to do is set up a table of "commands" (a CPB), set some pointers, and then turn on ADMA mode. This would allow the CPU to avoid doing any IO port commands, and would free up tremendous amounts of CPU time, if you can find a disk controller that supports it.
ADMA is
▲ADMA is supposedly built to unleash the inherent power of Queued and Overlapped ATA command sets, but neither is necessary to run ADMA, and ADMA can handle both ATA and ATAPI commands.
==Detection and Initialization==
The ATA/ATAPI Host Adapters Standard specifies a PCI Class Code, details initialization, and operation of ADMA devices.
7.4.1.6 PCI Class Code / Table 14 – ADMA PCI Class Code
* Programming Interface Code: 20h – Single Stepping / 30h – Continuous Operation
* Sub-class Code: 05h – ATA
* Base-Class Code: 01h – Mass Storage
Several vendors have chosen ADMA mode as the basis for their SATA controller implementations, however, often these implementations contain proprietary extensions. For this reason, the PCI Class may be different.. driver "quirks" may be required to support these devices.
==See Also==
Line 27 ⟶ 21:
===External Links===
* http://www.t13.org/Documents/UploadedDocuments/technical/e00149r0.pdf -- Initial specification
* http://www.t13.org/Documents/UploadedDocuments/project/d1510r1-Host-Adapter.pdf -- Latest draft of "ATA/ATAPI Host Adapters Standard"
{{stub}}
|
Revision as of 20:48, 5 September 2012
ADMA is a feature of some PCI ATA controllers, ADMA eliminates the need for the driver to send the READ and WRITE commands to the drive. The Bus Mastering Controller sets up both sides of every DMA transfer, and initiates the transfer itself. All the driver needs to do is set up a table of "commands" (a CPB), set some pointers, and then turn on ADMA mode. This greatly reduces excessive IO operations, and frees up precious CPU time.
An ADMA capable controller maps the standard ATA IO and ADMA registers at a 64-bit or 32-bit address (..PCI BAR 4/5, 20h-27h). The size of this area is 1024 bytes.
ADMA is supports Queued and Overlapped ATA command sets, but neither is necessary to support ADMA. Both the ATA and ATAPI commands sets are supported.
Detection and Initialization
The ATA/ATAPI Host Adapters Standard specifies a PCI Class Code, details initialization, and operation of ADMA devices.
7.4.1.6 PCI Class Code / Table 14 – ADMA PCI Class Code
- Programming Interface Code: 20h – Single Stepping / 30h – Continuous Operation
- Sub-class Code: 05h – ATA
- Base-Class Code: 01h – Mass Storage
Several vendors have chosen ADMA mode as the basis for their SATA controller implementations, however, often these implementations contain proprietary extensions. For this reason, the PCI Class may be different.. driver "quirks" may be required to support these devices.
See Also
Articles
External Links
- http://www.t13.org/Documents/UploadedDocuments/technical/e00149r0.pdf -- Initial specification
- http://www.t13.org/Documents/UploadedDocuments/project/d1510r1-Host-Adapter.pdf -- Latest draft of "ATA/ATAPI Host Adapters Standard"