http://standards.ieee.org/reading/ieee/std_public/description/busarch/1212.1-1993_desc.html

IEEE Std 1212.1-1993 IEEE Standard for Communicating Among Processors and Peripherals Using Shared Memory (Direct Memory Access—DMA) -Description

Abstract: Primitive yet high-performance means are defined for passing messages across the bus between the Processor and some form of intelligence in the I/O Unit's Function. This message-passing scheme makes minimal demands on the instruction set and hardware required. In addition, several simple conventions are defined for the structure of the messages passed. The intent is to provide a standard architectural framework that supports the detailed definition of application-dependent I/O Unit and Function interface standards. The algorithms and definitions themselves are useful in the design of integrated circuits for I/O.

Keywords: direct memory access, DMA, memory, I/O, processor

Content +

  • 1. Overview
    • 1.1 Scope of DMA recommendations
    • 1.2 Objectives
    • 1.3 Overview of DMA
      • 1.3.1 Bus topologies considered
      • 1.3.2 I/O transaction flow and use of memory
      • 1.3.3 Node and queue topology
      • 1.3.4 Message priority handling
  • 2. References
  • 3. Document structure and notation
    • 3.1 Document structure and conformance requirements
    • 3.2 Conformance levels
    • 3.3 Technical glossary
    • 3.4 Data structure notation
      • 3.4.1 Address-invariant (DMA) notation
      • 3.4.2 Big endian notation
      • 3.4.3 Little endian notation
    • 3.5 Node description (capitalization)
    • 3.6 Notation used for algorithms
      • 3.6.1 Notation for variables
      • 3.6.2 Notation for bus interface access
      • 3.6.3 Special macros and functions
  • 4. Background concepts
    • 4.1 Miscellaneous components
      • 4.1.1 Expected interrupt mechanisms
      • 4.1.2 Methods of flow control
      • 4.1.3 Software access to bus transactions
    • 4.2 Circular Queue
    • 4.3 Dispatch List
    • 4.4 Shareable List
    • 4.5 Mailbox
    • 4.6 Hybrid DMA schemes
      • 4.6.1 Circular Queues outbound, Mailbox inbound
      • 4.6.2 Mailbox agents as message scheme converters
      • 4.6.3 Shareable List agents as message scheme converters
    • 4.7 Device-to-Device DMA
      • 4.7.1 General description of Device-to-Device DMA
      • 4.7.2 Device-to-Device data structure use
      • 4.7.3 Bus transaction-ordering considerations
      • 4.7.4 Driver considerations
  • 5. Specification of Circular Queues as a DMA interface
    • 5.1 Overall description of Circular Queue DMA applied to I/O
    • 5.2 Circular Queue data structures
    • 5.3 Specific services Circular Queues require from underlying bus system
    • 5.4 Unit initialization steps for Circular Queues
    • 5.5 Circular Queue enqueue operations
    • 5.6 Circular Queue dequeue operations
  • 6. Specification of Dispatch Lists as a DMA interface
    • 6.1 Overall description of Dispatch List DMA applied to I/O
    • 6.2 Dispatch List data structures
    • 6.3 Specific services Dispatch Lists require from underlying bus system
    • 6.4 Unit initialization steps for Dispatch lists
    • 6.5 Dispatch list enqueue operation
    • 6.6 Dispatch List dequeue operations
  • 7. Specification of Shareable Lists as a DMA interface
    • 7.1 Overall description of Shareable List DMA applied to I/O
    • 7.2 Shareable List data structures
    • 7.3 Specific services Shareable Lists require from underlying bus system
    • 7.4 Unit initialization steps for Shareable Lists
    • 7.5 Shareable List enqueue operations
    • 7.6 Shareable List dequeue operations
  • 8. Specification of Mailboxes as a DMA interface
    • 8.1 Overall description of Mailbox DMA applied to I/O
    • 8.2 Mailbox data structures
    • 8.3 Specific services Mailbox DMA requires from underlying bus system
    • 8.4 Unit initialization steps for Mailbox DMA
    • 8.5 Mailbox enqueue operations
    • 8.6 Mailbox dequeue operations
  • 9. Specification of Device-to-Device DMA
    • 9.1 Device-to-Device DMA data structures
    • 9.2 Specific services required from the underlying bus system
    • 9.3 Unit initialization steps for Device-to-Device DMA
    • 9.4 Producer I/O Unit enqueue operations for Device-to-Device DMA
    • 9.5 Consumer I/O Unit operations for Device-to-Device DMA
    • 9.6 Producer unit operations for buffer return
    • 9.7 Producer unit operations for terminating Device-to-Device DMA
  • 10. Specifications and conventions for DMA message structure
    • 10.1 Overview of message structure
    • 10.2 DMA message specifications
      • 10.2.1 Rules of DMA memory ownership
      • 10.2.2 Demultiplexing of messages in shared queues
      • 10.2.3 Block vector structures for passing segmented data
    • 10.3 Guidelines for DMA message conventions
      • 10.3.1 Overall message conventions
      • 10.3.2 Transaction-initiation message formats
      • 10.3.3 Transaction-completion message formats
      • 10.3.4 Effect of available message sizes
  • 11. Details: Specifications applying to all models
    • 11.1 Services assumed from the underlying bus system
      • 11.1.1 Expected bus transactions
      • 11.1.2 Bus transaction usage
      • 11.1.3 Transaction forwarding through bridges
    • 11.2 DMA Controller functions
      • 11.2.1 Required primitive facilities
      • 11.2.2 First optional enhancement: Traversing block vectors
      • 11.2.3 Final option: Full DMA message support
    • 11.3 Initialization, powerfail recovery, and reset
      • 11.3.1 Unit_control CSR
      • 11.3.2 Unit_status CSR
      • 11.3.3 Initialization CSRs
      • 11.3.4 General unit initialization steps
    • 11.4 Interrupt mechanisms
    • 11.5 Other specifications applying to all models
  • Annex A Example applications
    • A.1 Use of building blocks to build an interface
    • A.2 Examples of queue use to build an Ethernet interface
      • A.2.1 Ethernet example #1: Two “outbound” queues—Simple data movement
      • A.2.2 Ethernet example #2: Two queues—Disk-like interface
      • A.2.3 Ethernet example #3: Three queues—Separate receive buffer pool
      • A.2.4 Ethernet example #4: Four queues: Separate send/receive channels
    • A.3 An example disk interface (detailed) using Circular Queues
      • A.3.1 Unit-global data structures
      • A.3.2 Outbound message use
      • A.3.3 Inbound message use
      • A.3.4 Powerfail recovery and unit reset
  • Annex B Caching issues
  • Annex C Notes on I/O Unit Design
    • C.1 Overall I/O node model
    • C.2 Frontplane and application control
  • Annex D Coarse performance comparisons and tradeoffs
    • D.1 Coarse analysis of bus traffic for DMA models
    • D.2 Coarse analysis of software overhead for DMA models
      • D.2.1 Processor interrupt overhead
      • D.2.2 I/O Unit block-copy set-up overhead
    • D.3 Rough topological comparisons
      • D.3.1 Suitability for large numbers of messages
      • D.3.2 Suitability for large numbers of units—multiple producers
      • D.3.3 Suitability for Processor-to-Processor communication
      • D.3.4 Cost of memory use
      • D.3.5 Cost of special hardware
      • D.3.6 Reliability
  • Annex E Description of former Circular Queue options
    • E.1 Optional, multi-segment extension of a Circular Queue
    • E.2 Optional, dynamic Circular Queue segments
  • Annex F Bibliography

Reply via email to