WO1997034233A1 - Method and apparatus for performing direct memory access (dma) byte swapping - Google Patents

Method and apparatus for performing direct memory access (dma) byte swapping Download PDF

Info

Publication number
WO1997034233A1
WO1997034233A1 PCT/US1997/003357 US9703357W WO9734233A1 WO 1997034233 A1 WO1997034233 A1 WO 1997034233A1 US 9703357 W US9703357 W US 9703357W WO 9734233 A1 WO9734233 A1 WO 9734233A1
Authority
WO
WIPO (PCT)
Prior art keywords
dma
memory
data
bytes
command
Prior art date
Application number
PCT/US1997/003357
Other languages
French (fr)
Inventor
Mohammed Sriti
Original Assignee
Micron Technology, 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 Micron Technology, Inc. filed Critical Micron Technology, Inc.
Priority to CA002249389A priority Critical patent/CA2249389C/en
Priority to AU19859/97A priority patent/AU1985997A/en
Priority to JP53265897A priority patent/JP3940435B2/en
Publication of WO1997034233A1 publication Critical patent/WO1997034233A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Definitions

  • the present invention pertains to the field of computer systems. More particularly, the present invention relates to performing byte swapping during data transfers in a computer system.
  • Computer systems generally operate upon binary data items that are anywhere between one and eight bytes in length, where a "byte” is defined as eight bits.
  • a "byte” is defined as eight bits.
  • the smallest data item that a modern computer system will operate on is either a "word”, which is two bytes, or a “double-word” (“dword”), which is four bytes.
  • dword double-word
  • One possible reason byte swapping may be desirable, for example, is to switch back and forth between different methods of addressing data, such as between "little- endian” addressing, in which a memory address refers to the lowest- order byte of a data item, and "big-endian” addressing, in which an address specifies the highest-order byte of a data item.
  • byte swapping is generally performed by the host processor in response to software commands.
  • a new location i.e., a different location in memory or a peripheral device
  • the host processor would typically read the data from the memory, rearrange the bytes, and then write back the rearranged data words to the first block of memory- Then, the host would write the modified data words into the new location.
  • This method has the disadvantage of being time-consuming, because the host processor must write back the modified data before transferring the data to the new location. Hence, what is needed is a faster and more efficient way to perform byte swapping during memory access operations.
  • the apparatus comprises a direct memory access (DMA) controller coupled to a bus interface.
  • the bus interface provides a connection to a bus, to which a memory is also coupled.
  • the DMA controller accesses data words stored in the memory, wherein each data word includes at least two bytes, and swaps the bytes of at least one of the data words according to a control input.
  • Figure 1 illustrates a computer system in which the present invention is implemented.
  • Figure 2 illustrates circuitry on a graphics accelerator card in the computer system of Figure 1.
  • Figure 3 illustrates control flow between a DMA controller and a host system during a DMA operation.
  • Figure 4A illustrates a direct memory access (DMA) command pair.
  • DMA direct memory access
  • Figure 4B is a table illustrating a byte swapping scheme.
  • Figure 5 is a flow diagram illustrating a technique for performing DMA byte swapping.
  • Figure 6 illustrates circuitry in a DMA controller for performing DMA byte swapping during memory read operations.
  • Figure 7 illustrates circuitry in DMA controller for performing DMA byte swapping during memory write operations.
  • DMA direct memory access
  • FIG. 1 illustrates a computer system 1 in which the present invention is implemented.
  • the computer systems includes a central processing unit (CPU) 10 coupled to a memory 20 by a system bus 30.
  • the system bus 30 is coupled to a PCI (peripheral component interconnect) bus 40 by a bus interface 50.
  • PCI peripheral component interconnect
  • Coupled the PCI bus 40 are a graphics accelerator card 60, which is coupled to a monitor 70, as well as a number of other peripheral devices 80 and 90.
  • the present invention is implemented within graphics accelerator card 60.
  • FIG. 2 illustrates the graphics accelerator card 60 is shown in greater detail.
  • Graphics accelerator card 60 includes a graphics processor 102, which is designed to control and perform various graphics functions.
  • Graphics processor 102 is coupled to a local memory 106 through a memory interface 105 and to a pixel engine 104.
  • Local memory 106 includes a frame buffer for storing pixel color values that are to be displayed on the monitor 70. Color values stored in the frame buffer are provided to the monitor in the form of RGB (red, green, blue) analog signals via display interface 107.
  • the graphics accelerator card 60 is coupled to the PCI bus 40 by a PCI interface 100.
  • a direct memory access (DMA) controller 101 which is coupled to PCI interface 100, controls DMA operations performed on any memory within the computer system 1, such as main memory 20, that are required to support operation of card 60.
  • Information received by the graphics accelerator card 60 over PCI bus 40 is provided to the graphics processor via an input FIFO 103, while information to be output onto the PCI bus 40 by the graphics processor 102 is provided to the PCI interface 100 via an output FIFO 108.
  • byte swapping is performed by DMA controller 101 under the control of a state machine in the PCI interface 100.
  • the DMA controller is a PCI bus master which executes DMA operations that are specified by command pairs in a chained DMA command list.
  • Figure 3 illustrates an example of a chained command list 24, which is stored in memory 20.
  • the command list 24 is generated by graphics driver software 22 supporting the graphics accelerator card 60 and is also stored in memory 20.
  • Each DMA command pair consists of an Address field in the even dword and a Length field in the odd dword.
  • Figure 4A illustrates a DMA command pair, including Address field 211 and Length field 212.
  • the Address field provides a word-aligned physical byte address of either: 1) the first dword of data in the data array 26 that is to be accessed for that command, or 2) the (link) address of the next DMA command to be executed.
  • the Length field specifies the size of the DMA transfer when the Address field specifies an address in the data array 26.
  • the most significant bit of the Length field, bit L31 is used to indicate whether the address specifies the location of data or a link to another DMA command. Specifically, a value of 1 for bit L31 indicates that the Address field specifies a link to another DMA command.
  • bits Lo and Li of each DMA command are not required for addressing data. Therefore, the two least significant bits of the Length field, bits Lo and Li (where Lo is the least significant bit), are used in the present invention to indicate the byte swapping scheme for a memory access. For each DMA command, the values of bits Lo and Li are set by the graphics driver software 22 based on the graphics requirements of whatever application software is currently nmning in the computer system 1. Note that bits Lo and Li are ignored if bit L31 is set to 1, since the Address field specifies a link to another DMA command in such cases.
  • Figures 4A and 4B illustrate how DMA commands are used to implement a byte swapping scheme.
  • a DMA command consists of an Address field 211 and a Length field 212.
  • the Length field 212 includes the bit pair 'LlLo'.
  • the value of bit pair 'LlLo' determines the byte swapping scheme, as shown in Figure 4B.
  • each data item is a dword consisting of four bytes, Bo through B3, where byte Bo is the lowest order byte and byte B3 is the highest order byte.
  • FIG. 3 illustrates the control flow during a DMA operation.
  • the DMA controller 101 includes a DMA command pointer register 220 and a DMA command register 222.
  • the DMA command pointer register 220 stores the physical byte address of the current DMA command pair.
  • the DMA command register 222 holds the values of the DMA command pair currently being executed.
  • a DMA operation is initiated by the graphics driver 22 writing the address of the first DMA command of the DMA command list to the DMA command pointer register 220.
  • the DMA controller 101 begins executing DMA commands (i.e., command pairs) in the chained DMA command list 24.
  • a null value in the Address field terminates the DMA operation.
  • the value in the DMA command pointer register 220 is incremented by eight bytes to correspond to the byte location of the next DMA command pair.
  • the DMA controller 101 first checks the DMA command pointer register 220 to determine if an address of a DMA command pair has been written to the register 200 (step 501). If an address has been written to the DMA command pointer register 220, then the DMA controller 101 gets from the command list the DMA command pair pointed to by the DMA command pointer register 220 and stores that command pair in register 222 (step 502). A determination is then made (step 503) as to whether the value of the Address field of the current DMA command pair is null. If the value of the Address field is null, then the operation is terminated. If the value is not null, then bit L31 of the Length field is examined (step 504).
  • bit L31 is 1 (i.e., the Address field specifies a link to the next DMA command pair), then the DMA controller 101 replaces the value in the DMA command pointer register with the link address specified by the Address field (step 505) and replaces the contents of the DMA command register 222 with the command pair at the link address (step 502).
  • bit L31 is 0 (i.e., the Address field specifies an address in the data array 26)
  • the DMA controller reads the data addressed by the current DMA command (step 506) and swaps the bytes within each dword of data according to bits Lo and Li of the current Length field (step 507). Byte swapping occurs as each data item (dword) is transferred from memory 20 to graphics accelerator card 60.
  • the DMA command pointer register 220 is incremented once again by eight bytes (step 508) in order to load the next command pair.
  • FIG. 6 illustrates circuitry for implementing DMA byte swapping as described above.
  • the DMA controller 101 includes a multiplexor 110 having inputs coupled to the PCI bus 40 and an output which is provided to FIFO 103 via the PCI interface 100.
  • Multiplexor 110 has four inputs which are selected based on bits LQ and Li of the Length field of the current DMA command.
  • Each input of multiplexor 110 receives the same 32 bit lines from the PCI bus 40. However, the arrangement of the bit lines is different for each input and corresponds to one of the four byte swapping formats described with reference to Figure 4B.
  • each bit position applied to input '00' receives the corresponding bit position of the PCI bus 40; however, for input '01', the eight least significant bit positions receive bits 24 through 31 of the PCI bus (i.e., PCI[31:24]), and the eight most significant bit positions of input '01' receive bits 0 through 7 of the PCI bus 40 (i.e., PCI[7:0]).
  • Figure 7 shows circuitry in an embodiment capable of performing DMA byte swapping during memory write operations.
  • a second multiplexor 112 is provided within the DMA controller 101. Multiplexor 112 receives four 32-bit inputs, each from output FIFO 108. The ordering of the bit lines for each input is arranged according to one of the four byte swapping formats illustrated in Figure 4B, as explained with respect to Figure 6. Multiplexor 112 provides one 32-bit output to PCI bus 40. Selection of the four inputs of multiplexor 112 is again determined by the values of bits 'LlLo' of the current DMA command.
  • multiplexors such as those illustrated in Figures 6 and 7 is only one possible way of implementing byte swapping within a DMA controller. Other ways of selecting byte ordering within a DMA controller may be utilized within the scope of the present invention.

Abstract

An apparatus and method for performing byte swapping using direct memory access (DMA) controller (101) is provided. In a computer system, a DMA controller for a peripheral component is coupled to system memory (20) via a bus (40). The DMA controller receives a command pointer (220) to initiate a memory access operation. The command pointer specifies the location of the first DMA command in a command list (24) to be executed by the DMA controller. Each DMA command includes an address word giving the starting address and length word indicating the number of data words to be accessed in memory. Because the data stored in memory is double-word aligned, the two least significant bits of the length word are not needed to perform the memory access and are instead used to indicate any byte swapping that is to be performed on the data during the memory access. During a memory access, the DMA controller swaps the bytes in each double-word of data as specified by the two least significant bits of the length word.

Description

METHOD AND APPARATUS FOR PERFORMING DIRECT MEMORY ACCESS (DMA) BYTE SWAPPING
FIELD OF THE INVENTION
The present invention pertains to the field of computer systems. More particularly, the present invention relates to performing byte swapping during data transfers in a computer system.
BACKGROUND OF THE INVENTION
Computer systems generally operate upon binary data items that are anywhere between one and eight bytes in length, where a "byte" is defined as eight bits. Typically, the smallest data item that a modern computer system will operate on is either a "word", which is two bytes, or a "double-word" ("dword"), which is four bytes. For various different reasons, it is sometimes necessary or desirable to alter the order of bytes within a word or dword data item. This operation is known as "byte swapping". One possible reason byte swapping may be desirable, for example, is to switch back and forth between different methods of addressing data, such as between "little- endian" addressing, in which a memory address refers to the lowest- order byte of a data item, and "big-endian" addressing, in which an address specifies the highest-order byte of a data item.
In existing computer systems, byte swapping is generally performed by the host processor in response to software commands. Consider, for example, a common situation in which data stored in a block of memory is to be transferred to a new location (i.e., a different location in memory or a peripheral device) and in which byte swapping is required. The host processor would typically read the data from the memory, rearrange the bytes, and then write back the rearranged data words to the first block of memory- Then, the host would write the modified data words into the new location. This method has the disadvantage of being time-consuming, because the host processor must write back the modified data before transferring the data to the new location. Hence, what is needed is a faster and more efficient way to perform byte swapping during memory access operations.
SUMMARY OF THE INVENTION
An apparatus for performing memory access operations upon a memory is provided. The apparatus comprises a direct memory access (DMA) controller coupled to a bus interface. The bus interface provides a connection to a bus, to which a memory is also coupled. During a memory access operation, the DMA controller accesses data words stored in the memory, wherein each data word includes at least two bytes, and swaps the bytes of at least one of the data words according to a control input.
Otheτ features of the present invention will be apparent from the accompanying drawings and from the detailed description which follows. BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
Figure 1 illustrates a computer system in which the present invention is implemented.
Figure 2 illustrates circuitry on a graphics accelerator card in the computer system of Figure 1.
Figure 3 illustrates control flow between a DMA controller and a host system during a DMA operation.
Figure 4A illustrates a direct memory access (DMA) command pair.
Figure 4B is a table illustrating a byte swapping scheme.
Figure 5 is a flow diagram illustrating a technique for performing DMA byte swapping.
Figure 6 illustrates circuitry in a DMA controller for performing DMA byte swapping during memory read operations.
Figure 7 illustrates circuitry in DMA controller for performing DMA byte swapping during memory write operations.
DETAILED DESCRIPTION
A method and apparatus for performing direct memory access (DMA) byte swapping is described. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be evident, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
Figure 1 illustrates a computer system 1 in which the present invention is implemented. The computer systems includes a central processing unit (CPU) 10 coupled to a memory 20 by a system bus 30. The system bus 30 is coupled to a PCI (peripheral component interconnect) bus 40 by a bus interface 50. Coupled the PCI bus 40 are a graphics accelerator card 60, which is coupled to a monitor 70, as well as a number of other peripheral devices 80 and 90. The present invention is implemented within graphics accelerator card 60.
Figure 2 illustrates the graphics accelerator card 60 is shown in greater detail. Graphics accelerator card 60 includes a graphics processor 102, which is designed to control and perform various graphics functions. Graphics processor 102 is coupled to a local memory 106 through a memory interface 105 and to a pixel engine 104. Local memory 106 includes a frame buffer for storing pixel color values that are to be displayed on the monitor 70. Color values stored in the frame buffer are provided to the monitor in the form of RGB (red, green, blue) analog signals via display interface 107. The graphics accelerator card 60 is coupled to the PCI bus 40 by a PCI interface 100. A direct memory access (DMA) controller 101, which is coupled to PCI interface 100, controls DMA operations performed on any memory within the computer system 1, such as main memory 20, that are required to support operation of card 60. Information received by the graphics accelerator card 60 over PCI bus 40 is provided to the graphics processor via an input FIFO 103, while information to be output onto the PCI bus 40 by the graphics processor 102 is provided to the PCI interface 100 via an output FIFO 108.
In the present invention, byte swapping is performed by DMA controller 101 under the control of a state machine in the PCI interface 100. The DMA controller is a PCI bus master which executes DMA operations that are specified by command pairs in a chained DMA command list. Figure 3 illustrates an example of a chained command list 24, which is stored in memory 20. The command list 24 is generated by graphics driver software 22 supporting the graphics accelerator card 60 and is also stored in memory 20. Each DMA command pair consists of an Address field in the even dword and a Length field in the odd dword. Figure 4A illustrates a DMA command pair, including Address field 211 and Length field 212. The Address field provides a word-aligned physical byte address of either: 1) the first dword of data in the data array 26 that is to be accessed for that command, or 2) the (link) address of the next DMA command to be executed. The Length field specifies the size of the DMA transfer when the Address field specifies an address in the data array 26. The most significant bit of the Length field, bit L31, is used to indicate whether the address specifies the location of data or a link to another DMA command. Specifically, a value of 1 for bit L31 indicates that the Address field specifies a link to another DMA command.
Data stored in memory 20 is dword-aligned; consequently, bits Lo and Li of each DMA command are not required for addressing data. Therefore, the two least significant bits of the Length field, bits Lo and Li (where Lo is the least significant bit), are used in the present invention to indicate the byte swapping scheme for a memory access. For each DMA command, the values of bits Lo and Li are set by the graphics driver software 22 based on the graphics requirements of whatever application software is currently nmning in the computer system 1. Note that bits Lo and Li are ignored if bit L31 is set to 1, since the Address field specifies a link to another DMA command in such cases.
Figures 4A and 4B illustrate how DMA commands are used to implement a byte swapping scheme. Referring again to Figure 4A, a DMA command consists of an Address field 211 and a Length field 212. The Length field 212 includes the bit pair 'LlLo'. The value of bit pair 'LlLo' determines the byte swapping scheme, as shown in Figure 4B. In the preferred embodiment, each data item is a dword consisting of four bytes, Bo through B3, where byte Bo is the lowest order byte and byte B3 is the highest order byte. During a DMA operation, if the value of 'LlLo' is 00, then no byte swapping is performed. If the value of 'LlLo' is 01, then bytes Bo and B3 are swapped and bytes Bl and B2 are swapped. If the value of 'LILQ' is 10, then bytes B2 and B3 are swapped and bytes Bo and Bl are swapped. If the value of 'LlLo' is 11, then bytes Bl and B3 are swapped and bytes Bo and B2 are swapped.
Figure 3 illustrates the control flow during a DMA operation. As shown in Figure 3, the DMA controller 101 includes a DMA command pointer register 220 and a DMA command register 222. The DMA command pointer register 220 stores the physical byte address of the current DMA command pair. The DMA command register 222 holds the values of the DMA command pair currently being executed. A DMA operation is initiated by the graphics driver 22 writing the address of the first DMA command of the DMA command list to the DMA command pointer register 220. When the address of the first DMA command pair is written to the DMA command pointer register 220, the DMA controller 101 begins executing DMA commands (i.e., command pairs) in the chained DMA command list 24. A null value in the Address field terminates the DMA operation. Each time a DMA command is completed, the value in the DMA command pointer register 220 is incremented by eight bytes to correspond to the byte location of the next DMA command pair.
Referring now to Figure 5, the method of operation of the present invention is described. The DMA controller 101 first checks the DMA command pointer register 220 to determine if an address of a DMA command pair has been written to the register 200 (step 501). If an address has been written to the DMA command pointer register 220, then the DMA controller 101 gets from the command list the DMA command pair pointed to by the DMA command pointer register 220 and stores that command pair in register 222 (step 502). A determination is then made (step 503) as to whether the value of the Address field of the current DMA command pair is null. If the value of the Address field is null, then the operation is terminated. If the value is not null, then bit L31 of the Length field is examined (step 504). If bit L31 is 1 (i.e., the Address field specifies a link to the next DMA command pair), then the DMA controller 101 replaces the value in the DMA command pointer register with the link address specified by the Address field (step 505) and replaces the contents of the DMA command register 222 with the command pair at the link address (step 502). If bit L31 is 0 (i.e., the Address field specifies an address in the data array 26), then the DMA controller reads the data addressed by the current DMA command (step 506) and swaps the bytes within each dword of data according to bits Lo and Li of the current Length field (step 507). Byte swapping occurs as each data item (dword) is transferred from memory 20 to graphics accelerator card 60. Upon completion of the current DMA command, the DMA command pointer register 220 is incremented once again by eight bytes (step 508) in order to load the next command pair.
Figure 6 illustrates circuitry for implementing DMA byte swapping as described above. The DMA controller 101 includes a multiplexor 110 having inputs coupled to the PCI bus 40 and an output which is provided to FIFO 103 via the PCI interface 100. Multiplexor 110 has four inputs which are selected based on bits LQ and Li of the Length field of the current DMA command. Each input of multiplexor 110 receives the same 32 bit lines from the PCI bus 40. However, the arrangement of the bit lines is different for each input and corresponds to one of the four byte swapping formats described with reference to Figure 4B. For example, each bit position applied to input '00' (selected if no byte swapping is requested) receives the corresponding bit position of the PCI bus 40; however, for input '01', the eight least significant bit positions receive bits 24 through 31 of the PCI bus (i.e., PCI[31:24]), and the eight most significant bit positions of input '01' receive bits 0 through 7 of the PCI bus 40 (i.e., PCI[7:0]).
Although the preferred embodiment provides means for performing byte swapping during a memory read operation, memory write operations can also be performed within the scope of the present invention. Figure 7 shows circuitry in an embodiment capable of performing DMA byte swapping during memory write operations. In the embodiment of Figure 7, a second multiplexor 112 is provided within the DMA controller 101. Multiplexor 112 receives four 32-bit inputs, each from output FIFO 108. The ordering of the bit lines for each input is arranged according to one of the four byte swapping formats illustrated in Figure 4B, as explained with respect to Figure 6. Multiplexor 112 provides one 32-bit output to PCI bus 40. Selection of the four inputs of multiplexor 112 is again determined by the values of bits 'LlLo' of the current DMA command.
It should be appreciated that the use of multiplexors such as those illustrated in Figures 6 and 7 is only one possible way of implementing byte swapping within a DMA controller. Other ways of selecting byte ordering within a DMA controller may be utilized within the scope of the present invention.
Thus, a method and apparatus for performing DMA byte swapping has been described. Although the present invention has been described with reference to specific exemplary embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention as set forth in the claims. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.

Claims

CLAIMSWhat is claimed is:
1. An apparatus for performing memory access operations upon a memory, the apparatus comprising: a bus interface providing a connection to a bus coupled to the memory; and a direct memory access (DMA) controller coupled to the bus interface, the DMA controller accessing data words stored in the memory, each of the data words including a plurality of bytes, the DMA controller swapping bytes of one of the data words during a memory access operation according to a control input.
2. An apparatus according to claim 1, wherein the DMA controller accesses the data words according to a DMA command, wherein the DMA command includes the control input.
3. An apparatus according to claim 2, wherein the DMA command includes a length portion specifying a number of data words to be read from or written to the memory, the length portion including a plurality of bits, wherein the control input comprises at least one bit of the length portion.
4. A direct memory access (DMA) controller for controlling memory access operations performed upon a memory, the DMA controller comprising: register means for receiving and storing a DMA command, the DMA command including a bit for designating a byte swapping operation; and swapping means for receiving a data item read from or to be written to the memory, the data item including a plurality of bytes, the swapping means for swapping bytes in the data item according to the byte swapping pattern.
5. A DMA controller according to claim 4, wherein the swapping means comprises multiplexor means for selecting one of a plurality of inputs according to at least the bit for designating the byte swapping operation, each of the inputs corresponding to one of a plurality of possible byte swapping patterns, the multiplexor means further for outputting a modified data item having swapped bytes.
6. A DMA controller according to claim 4, wherein the data item is a double-word of data.
7. A DMA controller according to claim 4, wherein the DMA command comprises a length field specifying a number of data items to be read from or written to the memory, the length field including the bit for designating the byte swapping operation.
8. A direct memory access (DMA) controller for controlling memory access operations performed upon a memory, the DMA controller comprising: a command register receiving and storing a DMA command, the DMA command including an address portion and a length portion, the length portion including a plurality of signal bits designating a byte swapping operation; and a multiplexor coupled to receive the signal bits and coupled to receive a data word read from the memory at any of a plurality of inputs, the data word including a plurality of bytes, each of the inputs corresponding to the data word according to a different possible byte order, the multiplexor selecting one of the inputs according to the signal bits and outputting a modified data word having swapped bytes.
9. A DMA controller according to claim 8, wherein the data item is a double-word of data consisting of thirty-two (32) bits.
10. A DMA controller according to claim 8, wherein the DMA command comprises a length field specifying a number of data items to be read from or written to the memory, the length field including the bit for designating the byte swapping operation.
11. In a processing system having a host processor, a memory coupled to the host processor, and a peripheral component coupled to the host processor and to the memory, the peripheral component including a direct memory access (DMA) controller, a method of performing byte swapping with respect to data words stored in the memory, the method comprising the steps of: providing a DMA command to the DMA controller, the DMA command including a signal bit designating a byte swapping pattern; using the DMA controller to read a data word from the memory in response to the DMA command, the data word including a plurality of bytes; using the DMA controller to rearrange the bytes of the data word read from the memory based on the signal bit to form a modified data word for use by the peripheral component.
12. A method according to claim 11, wherein the step of providing the DMA command to the DMA controller comprises the step of providing an address and a length indication to the DMA controller, the length indication indicating a number of data words to be read from the memory.
13. A method according to claim 12, wherein the length indication includes the signal bit.
14. A method according to claim 13, wherein the address specifies portions of the memory which are double-word aligned.
15. A method according to claim 11, wherein the step of using the DMA controller to rearrange the bytes of the data word read from the memory comprises the step of multiplexing a plurality of inputs, each input corresponding to the data word according to a different possible byte order.
16. In a direct memory access (DMA) controller, a method of performing DMA operations, the method comprising the steps of: inputting a DMA command, the DMA command indicating a data word to be read from or written to a memory, the data word including a plurality of bytes, the DMA command further designating a byte swapping scheme; inputting the data word; and swapping the bytes of the data word according to the byte swapping scheme.
17. A method according to claim 16, wherein the step of inputting a DMA command comprises the step of inputting a DMA command having an address field and a length field, at least a portion of the length field designating the byte swapping scheme.
18. A method according to claim 17, wherein the step of swapping the bytes of the data word comprises the steps of: generating a plurality of versions of the data word, each version representing the data word according to one of a plurality of possible byte swapping schemes; and outputting one of the versions as modified data word according to the byte swapping scheme designated by the DMA command.
19. In a direct memory access (DMA) controller associated with a peripheral device, a method of performing DMA operations, the method comprising the steps of: receiving a pointer specifying a location of a DMA command; in response to receiving the pointer, accessing the DMA command, the DMA command including an address portion and a length portion, the DMA command indicating a plurality of data words to be read from a memory, each of the data words including a plurality of bytes, the DMA command including a plurality of bits designating a byte swapping operation to be performed upon the data words; reading the data words from the memory; and rearranging the bytes within the data words according to the byte swapping scheme while providing the data words to the peripheral device.
20. A method according to claim 19, wherein the step of rearranging the bytes of the data words comprises the steps of: generating a plurality of versions of each of the data words, each version representing the data word according to one of a plurality of possible byte swapping operations; and outputting one of the versions as modified data word according to the byte swapping operation designated by the DMA command.
21. A method according to claim 20, wherein the length portion of the DMA command includes the plurality of bits designating the byte swapping operation to be performed upon the data words.
22. A method according to claim 21, wherein the DMA command specifies a portion of the memory that is double-word aligned, and wherein the plurality of bits designating the byte swapping operation comprise the two least significant bits of the length portion.
PCT/US1997/003357 1996-03-15 1997-03-04 Method and apparatus for performing direct memory access (dma) byte swapping WO1997034233A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CA002249389A CA2249389C (en) 1996-03-15 1997-03-04 Method and apparatus for performing direct memory access (dma) byte swapping
AU19859/97A AU1985997A (en) 1996-03-15 1997-03-04 Method and apparatus for performing direct memory access (dma) byte swapping
JP53265897A JP3940435B2 (en) 1996-03-15 1997-03-04 Method and apparatus for performing direct memory access (DMA) byte swapping

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/616,594 US5862407A (en) 1996-03-15 1996-03-15 System for performing DMA byte swapping within each data element in accordance to swapping indication bits within a DMA command
US08/616,594 1996-03-15

Publications (1)

Publication Number Publication Date
WO1997034233A1 true WO1997034233A1 (en) 1997-09-18

Family

ID=24470170

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1997/003357 WO1997034233A1 (en) 1996-03-15 1997-03-04 Method and apparatus for performing direct memory access (dma) byte swapping

Country Status (6)

Country Link
US (1) US5862407A (en)
JP (1) JP3940435B2 (en)
CN (1) CN1105360C (en)
AU (1) AU1985997A (en)
CA (1) CA2249389C (en)
WO (1) WO1997034233A1 (en)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0837397B1 (en) * 1996-10-18 2006-04-05 Matsushita Electric Industrial Co., Ltd. Data transfer apparatus and data transfer system for arbitrating a plurality of I/O ports in DMA
US6711636B1 (en) * 1999-09-29 2004-03-23 Silicon Graphics, Inc. Transfer attribute encoding within an address on a bus
AU6420001A (en) * 2000-06-02 2001-12-11 Mellanox Technologies Ltd. Dma doorbell
US6678755B1 (en) * 2000-06-30 2004-01-13 Micron Technology, Inc. Method and apparatus for appending memory commands during a direct memory access operation
JP4514173B2 (en) * 2000-10-13 2010-07-28 キヤノン株式会社 Data processing method and image processing apparatus
US7016987B2 (en) * 2001-06-21 2006-03-21 Integrated Device Technology, Inc. Transaction aligner microarchitecture
US6799232B1 (en) 2001-12-05 2004-09-28 Zarlink Semiconductor V.N., Inc. Automatic byte swap and alignment for descriptor-based direct memory access data transfers
US20050038946A1 (en) * 2003-08-12 2005-02-17 Tadpole Computer, Inc. System and method using a high speed interface in a system having co-processors
JP2005092742A (en) * 2003-09-19 2005-04-07 Toshiba Corp Video output controller and video card
KR101034493B1 (en) * 2004-01-09 2011-05-17 삼성전자주식회사 Image transforming apparatus, dma apparatus for image transforming, and camera interface supporting image transforming
US7904943B2 (en) * 2004-12-28 2011-03-08 O'connor Dennis M Secure controller for block oriented storage
CN100357871C (en) * 2005-06-30 2007-12-26 华为技术有限公司 Apparatus and method for supporting external storage device interface mode switching
JP4747077B2 (en) * 2006-11-16 2011-08-10 ルネサスエレクトロニクス株式会社 Arithmetic circuit
CN101482853B (en) * 2008-01-10 2010-10-27 松翰科技股份有限公司 Direct memory access system and method
US8694701B2 (en) 2011-12-15 2014-04-08 Mellanox Technologies Ltd. Recovering dropped instructions in a network interface controller
CN104516840B (en) * 2013-09-29 2017-08-29 联想(北京)有限公司 Information processing method and message processing device
DE102016211768A1 (en) * 2016-06-29 2018-01-04 Robert Bosch Gmbh Memory direct access control device and method of operation therefor
CN111240581B (en) * 2018-11-29 2023-08-08 北京地平线机器人技术研发有限公司 Memory access control method and device and electronic equipment
CN115237962A (en) * 2022-09-20 2022-10-25 南京芯驰半导体科技有限公司 Data searching method and device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5168561A (en) * 1990-02-16 1992-12-01 Ncr Corporation Pipe-line method and apparatus for byte alignment of data words during direct memory access transfers
US5317715A (en) * 1987-12-15 1994-05-31 Advanced Micro Devices, Inc. Reduced instruction set computer system including apparatus and method for coupling a high performance RISC interface to a peripheral bus having different performance characteristics

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4447878A (en) * 1978-05-30 1984-05-08 Intel Corporation Apparatus and method for providing byte and word compatible information transfers
US5265237A (en) * 1988-12-07 1993-11-23 Xycom, Inc. Byte swapping apparatus for selectively reordering bytes of an N-bit word communicated between an at computer and VME bus
US5214777A (en) * 1989-03-27 1993-05-25 Ncr Corporation High speed read/modify/write memory system and method
US5170477A (en) * 1989-10-31 1992-12-08 Ibm Corporation Odd boundary address aligned direct memory acess device and method
US5530835A (en) * 1991-09-18 1996-06-25 Ncr Corporation Computer memory data merging technique for computers with write-back caches
JP3471384B2 (en) * 1993-03-19 2003-12-02 富士通株式会社 Data transfer device and data transfer processing method
US5428741A (en) * 1993-07-26 1995-06-27 Ncr Corporation High speed image preprocessing system including a multi-purpose buffer for storing digital image data and data cropping means for selectively cropping the digital image data
US5559969A (en) * 1994-08-09 1996-09-24 Unisys Corporation Method and apparatus for efficiently interfacing variable width data streams to a fixed width memory
US5619728A (en) * 1994-10-20 1997-04-08 Dell Usa, L.P. Decoupled DMA transfer list storage technique for a peripheral resource controller
US5561820A (en) * 1994-11-30 1996-10-01 International Business Machines Corporation Bridge for interfacing buses in computer system with a direct memory access controller having dynamically configurable direct memory access channels
US5594854A (en) * 1995-03-24 1997-01-14 3Dlabs Inc. Ltd. Graphics subsystem with coarse subpixel correction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317715A (en) * 1987-12-15 1994-05-31 Advanced Micro Devices, Inc. Reduced instruction set computer system including apparatus and method for coupling a high performance RISC interface to a peripheral bus having different performance characteristics
US5168561A (en) * 1990-02-16 1992-12-01 Ncr Corporation Pipe-line method and apparatus for byte alignment of data words during direct memory access transfers

Also Published As

Publication number Publication date
AU1985997A (en) 1997-10-01
CA2249389C (en) 2002-07-09
JP2000510973A (en) 2000-08-22
JP3940435B2 (en) 2007-07-04
CN1218564A (en) 1999-06-02
US5862407A (en) 1999-01-19
CN1105360C (en) 2003-04-09
CA2249389A1 (en) 1997-09-18

Similar Documents

Publication Publication Date Title
US5862407A (en) System for performing DMA byte swapping within each data element in accordance to swapping indication bits within a DMA command
US5233690A (en) Video graphics display memory swizzle logic and expansion circuit and method
US5666515A (en) Information processing system having multiple modules and a memory on a bus, where any module can lock an addressable portion of the memory by sending retry signals to other modules that try to read at the locked address
US4507731A (en) Bidirectional data byte aligner
US5754191A (en) Method and apparatus for optimizing pixel data write operations to a tile based frame buffer
KR940002088B1 (en) Odd boundary address aligned dma
EP0780772A2 (en) A computer system with multiple PC card controllers and a method of controlling I/O transfers in the system
CA2012798C (en) Digital image overlay system and method
US6003122A (en) Direct memory access controller
US6150679A (en) FIFO architecture with built-in intelligence for use in a graphics memory system for reducing paging overhead
US5113497A (en) I/o control system for a plurality of peripheral devices
US6678755B1 (en) Method and apparatus for appending memory commands during a direct memory access operation
EP0410777A2 (en) Video graphics display memory swizzle logic circuit and method
JPH09179780A (en) Microprocessor device for supporting burst-enabled and cache-disabled memory access
EP0752694B1 (en) Method for quickly painting and copying shallow pixels on a deep frame buffer
US4314332A (en) Memory control system
KR940003631B1 (en) Control device
US4374418A (en) Linear microsequencer unit cooperating with microprocessor system having dual modes
US5471672A (en) Method for implementing a high speed computer graphics bus
US6078336A (en) Graphics memory system that utilizes look-ahead paging for reducing paging overhead
US5974494A (en) Method and apparatus for packing digital data
EP0690382B1 (en) Computer system with a multiplexed address bus and pipelined write operations
US4374416A (en) Linear sequencing microprocessor having word and byte handling
US5414831A (en) Apparatus and method for accessing a plurality of computer devices having a common address
KR0152436B1 (en) Video graphics display memory swizzle logic circuit and method

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 97194399.0

Country of ref document: CN

AK Designated states

Kind code of ref document: A1

Designated state(s): AL AM AT AT AU AZ BA BB BG BR BY CA CH CN CU CZ CZ DE DE DK DK EE EE ES FI FI GB GE GH HU IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SK TJ TM TR TT UA UG US UZ VN YU AM AZ BY KG KZ MD RU TJ TM

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH KE LS MW SD SZ UG AT BE CH DE DK ES FI FR GB GR IE

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
ENP Entry into the national phase

Ref document number: 2249389

Country of ref document: CA

Ref document number: 2249389

Country of ref document: CA

Kind code of ref document: A

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase