DMA circuit

Information

  • Patent Application
  • 20080005386
  • Publication Number
    20080005386
  • Date Filed
    October 31, 2006
    17 years ago
  • Date Published
    January 03, 2008
    16 years ago
Abstract
In a send engine of a protocol/DMA control circuit, a descriptor control circuit obtains a descriptor, and notifies the information of the descriptor to each circuit. A dummy/padding generation circuit generates a data pattern according to the instruction of the descriptor. A write control circuit performs data transfer using the generated data pattern as a dummy transfer data according to the instruction of the descriptor. The write control circuit also inserts the generated data pattern into the transfer data as a padding data according to the instruction of the descriptor, and performs data transfer.
Description

BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a diagram showing an example of a structure of a protocol/DMA control circuit according to an embodiment of the present invention.



FIG. 2 is a diagram showing an example of descriptors according to an embodiment of the present invention.



FIG. 3 is a flow chart of a data transfer process performed by a send engine according to an embodiment of the present invention.



FIG. 4 is a diagram showing an example of a storage system.



FIG. 5 is a diagram showing an example of a channel adaptor.



FIG. 6 is a diagram showing an example of a structure of a protocol/DMA control circuit.



FIG. 7 is a diagram showing an example of descriptors.



FIG. 8 is a diagram showing a concept of descriptors.



FIG. 9 is a diagram showing a concept of a BCC and a FCC.



FIG. 10 is a diagram showing an example of a portion of a storage system.





DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Embodiments of the present invention will now be described below with reference to the accompanied drawings.



FIG. 1 is a diagram showing an example of a structure of a protocol/DMA control circuit according to an embodiment of the present invention. The protocol/DMA control circuit 10 includes a protocol control circuit 11, a send engine 12, a host interface 13, a PCI interface 14, and a CM interface 15. The send engine 12 includes a descriptor control circuit 20, a host data control circuit 21, a BCC generation circuit 22, a FCC generation circuit 23, a write control circuit 24, and a dummy/padding generation circuit 25.


In FIG. 1, the circuits having a mark of 20 MHz operate at the same operating frequency 20 MHz as the operating frequency of the host interface 13. The CM interface 15 operates at 66 MHz, and other internal circuits operate at 80 MHz.


In the protocol/DMA control circuit 10, the protocol control circuit 11 receives host data through the host interface 13, and performs protocol control. The send engine 12 is a DMA engine for data write operations. The send engine 12 receives a descriptor from a MPU through the PCI interface 14, and transfers data to a CM through the CM interface 15 according to the information of the descriptor.


In the send engine 12, the descriptor control circuit 20 obtains the descriptor from the MPU through the PCI interface 14, and notifies the information of the descriptor to each of the circuits. The host data control circuit 21 inputs host data according to the information of the descriptor. The BCC generation circuit 22 generates a block check code (BCC) according to the information of the descriptor. The FCC generation circuit 23 generates a field check code (FCC) according to the information of the descriptor. The write control circuit 24 performs transfer control of the data to the CM according to the information of the descriptor. The dummy/padding generation circuit 25 is a circuit which generates a data pattern such as a dummy pattern or a padding pattern according to the information of the descriptor.



FIG. 2 is a diagram showing an example of descriptors according to an embodiment of the present invention. A descriptor 30 shown in FIG. 2 is an example of the descriptor 30 for data write operations. The descriptor 30 is stored in a memory 31, and includes Mode, DL, CMA, ptn0, ptn1, BBID, and FBID information. The DL, CMA, BBID, and FBID information are the same as the DL, CMA, BBID, and FBID information of the descriptor 140 shown in FIG. 7. In the Mode information, bit0 to bit2 are also the same as the bit0 to the bit2 of the descriptor 140 shown in FIG. 7. That is, the descriptor 30 shown in FIG. 2 corresponds to the descriptor generated by adding the Mode (bit3, bit4), ptn0, and ptn1 information to the descriptor 140 shown in FIG. 7.


In the Mode information, bit3 represents set/reset (set/reset information) of a dummy mode, and bit4 represents set/reset of a toggle mode. In the ptn0 information, a dummy/padding data pattern is specified. In the ptn1 information, a pattern used in the toggle mode is specified.


When the dummy mode is set, the dummy/padding generation circuit 25 sends a data pattern set in the ptn0 information to the write control circuit 24 as a dummy pattern. When the dummy mode is not set, the dummy/padding generation circuit 25 sends a data pattern set in the ptn0 information to the write control circuit 24 as a padding pattern, and causes the write control circuit 24 to add the data pattern to user data to be transferred. When the dummy mode is not set and the ptn0 information is all zero pattern, the dummy/padding generation circuit 25 performs the same padding as the conventional usual padding. When a test is performed, the dummy/padding generation circuit 25 can change the padding data by setting a predetermined pattern as the ptn0 information corresponding to the purpose of the test.


When the toggle mode is set, the dummy/padding generation circuit 25 sends a data pattern, in which the data patterns of the ptn0 information and the data pattern of the ptn1 information are alternately exchanged, to the write control circuit 24. Consequently, the data pattern, in which the ptn0 information and the ptn1 information are alternately repeated, with length specified by the data transfer length DL will be transferred as a dummy data. By setting different values to each of the ptn0 and ptn1 informations, it becomes easy to evaluate a ground bounce and cross talk tolerance within the high speed I/O and the circuit. Note that the ground bounce has the meaning that, when the internal state and the output of an IC (LSI) change simultaneously, the ground level of the IC changes due to parasitic capacitance of a pin/bonding wire, the ground impedance, and so on. Additionally, the cross talk has the meaning that an unnecessary signal leaks to a certain circuit or a line due to effects such as a floating capacitance, a parasitic capacitance, a common impedance of the ground, and so on.


Additionally, by changing the padding pattern for each descriptor 30, without keeping the padding pattern constant, for example when a unnecessary data change occurs during verification, it can be determined that the unnecessary data change is caused in which data transfer according to descriptor 30.


When the write control circuit 24 receives a dummy pattern from the dummy/padding generation circuit 25, the write control circuit 24 performs data transfer using the dummy pattern as the transfer data to the CM. Also, when the write control circuit 24 receives a padding pattern from the dummy/padding generation circuit 25, the write control circuit 24 inserts the padding pattern into the transfer data received from the host data control circuit 21 as the padding data, and performs data transfer to the CM.



FIG. 3 is a flow chart of a data transfer process performed by a send engine according to an embodiment of the present invention. Hereinafter, a TOP pointer represents a top address in which a queue constructed by the MPU is stored. A BTM pointer represents an address of the queue of which a data transfer process is completed. Additionally, for example, the bit3 of the Mode information is represented as Mode [3]. Note that, in the example shown in FIG. 3, insertion of the padding pattern into the transfer data is not performed.


When reset is released (step S10), the send engine 12 waits until a DMA start bit is set by the MPU (step S11).


When the DMA start bit is set by the MPU, the send engine 12 waits until the TOP pointer is updated by the MPU (step S12).


When the TOP pointer is updated by the MPU, the send engine 12 performs determination about the number of remaining queues. The difference of the TOP pointer and the BTM pointer is the number of remaining queues to be processed thereafter. When the send engine 12 determines that the TOP pointer is equal to the BTM pointer (step S13), the process returns to step S12, and the send engine 12 waits until the TOP pointer is updated by the MPU.


When the send engine 12 determines that the TOP pointer is not equal to the BTM pointer (step S13), the send engine 12 reads a descriptor 30 from a location of the memory 31 designated by the BTM pointer (step S14). By analyzing the read descriptor 30, when the send engine 12 determines that Mode [3] is equal to 1 (dummy mode set) (step S15), the send engine 12 generates a data pattern with the dummy/padding generation circuit 25 (step S16). When the send engine 12 determines that Mode [4] is equal to 1 (toggle mode set), the send engine 12 generates the data pattern in which the ptn0 and ptn1 informations are alternately repeated. When the send engine 12 determines that Mode [4] is equal to 0, the send engine 12 uses the ptn0 information itself as the data pattern. When the send engine 12 determines that Mode [3] is not equal to 1 (step S15), the send engine 12 reads user data from a data buffer, and, in a case that padding is required, the send engine 12 uses a data pattern of the ptn0 information as the padding data (step S17).


By analyzing the descriptor 30, when the send engine 12 determines that Mode [2] is equal to 1 (FCC generation) (step S18), the send engine 12 generates a FCC with the FCC generation circuit 23, and adds the generated FCC to the data (step S19).


By analyzing the descriptor 30, when the send engine 12 determines that Mode [1] is equal to 1 (BCC generation) (step S20), the send engine 12 generates a BCC with the BCC generation circuit 22, and adds the generated BCC to the data (step S21).


When the send engine 12 determines that the data transfer is completed successfully (step S22), the send engine 12 increments the BTM pointer (step S23), and the process returns to the step S13. Then, the send engine 12 performs determination about the number of remaining queues. When the send engine 12 determines that the data transfer is not completed successfully (step S22), the send engine 12 issues an error notification to the MPU (step S24), and performs an error clipping process and DMA restart operation (step S25).

Claims
  • 1. A DMA (Direct Memory Access) circuit performing data transfer according to a descriptor that is instruction information of the data transfer, the circuit comprising: a descriptor obtaining unit obtaining a descriptor;a data pattern generation unit generating a data pattern for verification of the DMA circuit; anda data transfer unit performing data transfer,wherein the data pattern generation unit generates the data pattern according to an instruction of the descriptor in a case that generation of the data pattern is instructed by the descriptor obtained by the descriptor obtaining unit, andwherein the data transfer unit uses the data pattern generated by the data pattern generation unit as dummy transfer data according to the obtained descriptor.
  • 2. A DMA circuit performing data transfer according to a descriptor that is instruction information of the data transfer, the circuit comprising: a descriptor obtaining unit obtaining a descriptor;a data pattern generation unit generating a data pattern for verification of the DMA circuit; anda data transfer unit performing data transfer,wherein the data pattern generation unit generates the data pattern which is used for padding according to information set in the descriptor obtained by the descriptor obtaining unit, andwherein the data transfer unit inserts the data pattern generated by the data pattern generation unit into transfer data as padding data according to an instruction of the obtained descriptor.
  • 3. A DMA circuit performing data transfer according to a descriptor that is instruction information of the data transfer, the circuit comprising: a descriptor obtaining unit obtaining a descriptor;a data pattern generation unit generating a data pattern for verification of the DMA circuit; anda data transfer unit performing data transfer,wherein the descriptor has an area in which mode information including at least a dummy mode and a toggle mode is specified, and an area in which a first pattern and a second pattern for generating the data pattern are specified,wherein the data pattern generation unit generates a data pattern in which the first pattern and the second pattern are alternately repeated in a case that the dummy mode is set and the toggle mode is set in the descriptor obtained by the descriptor obtaining unit, and generates a data pattern in which only the first pattern is included in a case that the dummy mode is set and the toggle mode is not set in the obtained descriptor, andwherein the data transfer unit uses the data pattern generated by the data pattern generation unit as dummy transfer data in a case that the dummy mode is set in the obtained descriptor.
Priority Claims (1)
Number Date Country Kind
2006-154419 Jun 2006 JP national