1. A method for a network switch port for receiving and storing data included in incoming packets that vary in size and then forwarding the data from the network switch port, the method comprising the steps of:
a. receiving each incoming packet and generating a cell sequence curresponding to the incoming packet, wherein each cell of the cell sequence contains a separate portion of the data included in the incoming packet, and wherein each cell of each generated cell sequence is of a uniform size;
b. making a determination with respect to at least one cell of each cell sequence generated at step a as to whether to discard the cell or to store the cell in a memory, and then one of storing the cell in the memory or discarding the cell in accordance with the determination;
c. reading cells out of the memory and forwarding them from the network switch port; and
d. repetitively generating an estimate of an average number of cells stored in the memory during a period immediately preceding generation of the estimate, wherein the determination made at step b is a function of the generated estimate.
2. The method in accordance with claim 1 wherein step b comprises the substeps of:
b1. assigning the cell a discard weight that is a function of the estimated average number of cells stored in the memory generated at step d;
b2. generating a random number;
b3. comparing the cell’s assigned discard weight to the random number to produce result data indicting whether the discard weight exceeds a value of the random number,
b4. making the determination as to whether to discard the cell or to store the cell in the memory as a function of the result data; and
b5. one of storing or discarding the cell in the memory in accordance with the determination made at step b4.
3. The method in accordance with claim 2 wherein the discard weight assigned to the cell at step b1 is a function of an amount by which the estimated average number of cells stored in the memory exceeds a threshold level.
4. The method in accordance with claim 2 wherein step b1comprises the substeps of:
b11. allocating a separate discard weight for each of a plurality of separate number ranges,
b12. determining which particular number range of the plurality of separate number ranges includes the estimated average number of cells stored in the memory, and
b13. assigning the allocated discard weight of the particular number range to the cell.
5. The method in accordance with claim 4 wherein the discard weight for each of said plurality of number ranges is allocated at step b11 as an increasing function of magnitude of number values spanned by the number range.
6. The method in accordance with claim 1 wherein step b comprises the step of:
b1. making the determination with respect to a first cell of the cell sequence as to whether to discard that first cell and all other cells of the cell sequence based on a comparison of the first cell’s assigned discard weight and the random number, and on whether a current number of cells stored in the cell memory at the time the determination is made exceeds a predetermined threshold level; and
b2. one of discarding all cells of the cell sequence or storing all cells of the sequence in the memory in accordance with the determination made at step b1.
7. The method in accordance with claim 1 wherein the step d of repetitively generating an estimate of an average number of cells stored in the memory during a period immediately preceding generation of the estimate comprises the substeps of:
a1. multiplying a last computed average number of cells stored in the memory by a value of a parameter X between 0 and 1 to produce a first value,
a2. multiplying a number of cells currently stored in the memory by a quantity (1\u2212X) to produce a second value, and
a3. generating a next estimate of the average number of cells stored in the memory, as a sum of the first and second value, and
a4. iteratively repeating steps a1 through a3.
8. The method in accordance with claim 1 wherein step b comprises the substeps of:
b1. allocating a separate discard weight for each of a plurality of separate number ranges;
b2. determining which particular number range of the plurality of separate number ranges includes the estimated average number of cells stored in the memory;
b3. assigning the allocated discard weight of the particular number range to a first cell of each sequence,
b4. generating a random number;
b5. comparing said at least one cell’s assigned discard weight to the random number to produce result data indicting whether the discard weight exceeds a value of the random number;
b6. making the determination with respect to the first cell of the cell sequence as to whether to discard that first cell and all other cells of the cell sequence based on a comparison of the first cell’s assigned discard weight and the random number; and
b7. one of discarding all cells of the cell sequence or storing all cells of the sequence in the memory in accordance with the determination made at step b6.
9. The method in accordance with claim 8 wherein the step d of repetitively generating art estimate of an average number of cells stored in the memory during a period immediately preceding generation of the estimate comprises the substeps of:
a1. multiplying a last computed average number of cells scored in the memory by a value of a parameter X between 0 and 1 to produce a first value,
a2. multiplying a number of cells currently stored in the memory by a quantity (1\u2212X) to produce a second value, and
a3. generating a next estimate of the average number of cells stored in the memory, as a sum of the first and second value, and
a4. iteratively repeating steps a1 through a3.
10. The method in accordance with claim 1 wherein the estimated of the average number of cells stored in the memory is estimated at step d whenever there is a change in a number of cells currently stored in the memory.
11. An apparatus for receiving, storing and then forwarding data in a plurality of incoming packets that vary in size, the apparatus comprising:
a memory;
first means for receiving each incoming packet and for generating a cell sequence corresponding to the incoming packet, wherein each cell of the cell sequence packet contains a separate portion of the data included in the incoming packet, and wherein each cell of each generated cell sequence is of a uniform size;
second means for making a determination with respect to at least one cell of each generated cell sequence to whether to discard the cell or to store the cell in the memory;
third means for one of storing or discarding the cell in the memory in accordance with the determination made by the second means, and for reading cells out of the memory and forwarding the cell; and
fourth means for repetitively generating an estimate of an average number of cells stored in the memory during a period immediately preceding generation of the estimate,
wherein the determination made by the second means is a function of the generated estimate.
12. The apparatus in accordance with claim 11 wherein the second means comprises:
fifth means for assigning each cell a discard weight that is a function of the estimate generated by the fourth means;
sixth means generating a random number;
seventh means for comparing the cell’s assigned discard weight to the random number to produce result data indicting whether the discard weight exceeds a value of the random number,
eighth means for making the determination as to whether to discard the cell or to store the cell in the memory in response to the result data.
13. The apparatus in accordance with claim 12 wherein the discard weight assigned to each cell is a variable function of the estimated average number.
14. The apparatus in accordance with claim 12 wherein the fifth means allocates a separate discard weight for each of a plurality of separate number ranges, determines which particular number range of the plurality of separate number ranges includes the estimated average number of cells stored in the memory, and assigns the allocated discard weight of the particular number range to the cell.
15. The apparatus in accordance with claim 14 wherein the fifth means allocates the discard weight for each of the plurality of number ranges as an increasing function of magnitude of number values spanned by the number range.
16. The apparatus in accordance with claim 12 wherein the eighth means makes making a determination with respect to a first cell of each cell sequence as to whether to discard that first cell and all other cells of the cell sequence based on a comparison of the first cell’s assigned discard weight and the random number, and on whether a current number of cells stored in the cell memory at the time the determination is made exceeds a predetermined threshold level.
17. The apparatus in accordance with claim 11 wherein the fourth means comprises:
means for multiplying a previously generated estimate of an average number of cells stored in the memory by a value of a parameter X between 0 and 1 to produce a first value,
means for multiplying a number of cells currently stored in the memory by a quantity (1\u2212X) to produce a second value, and
means for generating a next estimate of the average number of cells stored in the memory, as a sum of the first and second value.
18. The apparatus in accordance with claim 11 wherein the second means comprises:
fifth means for allocating a separate discard weight for each of a plurality of separate number ranges;
sixth means for determining which particular number range of the plurality of separate number ranges includes the estimated average number of cells stored in the memory;
seventh means for assigning the allocated discard weight of the particular number range to a first cell of each sequence;
eighth means for generating a random number;
ninth means for comparing said at least one cell’s assigned discard weight to the random number to produce result data indicting whether the discard weight exceeds a value of the random number; and
tenth means for making the determination with respect to the first cell of the cell sequence as to whether to discard that first cell and all other cells of the cell sequence based on a comparison of the first cell’s assigned discard weight and the random number, and
wherein the third means one of discards all cells of the cell sequence or stores all cells of the sequence in the memory in accordance with the determination wade by the tenth means.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A magnetoresistive element comprising:
a nonmagnetic conductive layer having two end faces in a direction along which the nonmagnetic conductive layer extends;
a first magnetic layer connected to the nonmagnetic conductive layer near one end face of the two end faces;
a second magnetic layer connected to the nonmagnetic conductive layer so as to be distant from the first magnetic layer in the direction;
a third magnetic layer connected to the nonmagnetic conductive layer so as be distant from the first magnetic layer in the direction;
a first magnetic electrode connected to the first magnetic layer;
a second magnetic electrode connected to the second magnetic layer; and
a third magnetic electrode connected to the third magnetic layer, a voltage being applied between the third magnetic electrode and the first magnetic electrode through the third magnetic layer, the nonmagnetic conductive layer, and the first magnetic layer, and a current being caused to flow between the third electrode and the second magnetic electrode through the third magnetic layer, the nonmagnetic conductive layer, and the second magnetic layer,
the nonmagnetic conductive layer decreasing in volume toward the one end face.
2. The element according to claim 1, wherein the first magnetic layer and the second magnetic layer are disposed on opposite sides of the nonmagnetic conductive layer, and the third magnetic layer is disposed on the same side as the second magnetic layer on the nonmagnetic conductive layer.
3. The element according to claim 1, wherein:
the first magnetic layer has a first surface, a second surface that is opposed to the first surface, and a third surface that is different from the first surface and the second surface; and
the nonmagnetic conductive layer is connected to at least one of the second surface and the third surface of the first magnetic layer.
4. The element according to claim 3, wherein:
the nonmagnetic conductive layer is connected to the third surface of the first magnetic layer; and
the nonmagnetic conductive layer decreases in thickness from the second surface to the first surface, or the one face of the nonmagnetic conductive layer is recessed in a direction from the first surface to the second surface.
5. The element according to claim 3, wherein the one face of the nonmagnetic conductive layer is connected to the second surface of the first magnetic layer.
6. The element according to claim 5, wherein the second surface of the first magnetic layer is tilted relative to the first surface.
7. The element according to claim 3, wherein the nonmagnetic conductive layer is connected to the second surface and the third surface of the first magnetic layer.
8. A magnetoresistive element comprising:
a nonmagnetic conductive layer having two end faces in a direction along which the nonmagnetic conductive layer extends;
a first magnetic layer connected to the nonmagnetic conductive layer near one end face of the two end faces;
a second magnetic layer connected to the nonmagnetic conductive layer so as to be distant from the first magnetic layer in the direction;
a first magnetic electrode connected to the first magnetic layer;
a second magnetic electrode connected to the second magnetic layer; and
a nonmagnetic electrode, a voltage being applied between the nonmagnetic electrode and the first magnetic electrode through the nonmagnetic conductive layer and the first magnetic layer, and a current being caused to flow between the nonmagnetic electrode and the second magnetic electrode through the nonmagnetic conductive layer and the second magnetic layer,
the nonmagnetic conductive layer decreasing in volume toward the one face.
9. The element according to claim 8, wherein the first magnetic layer and the second magnetic layer are disposed on the same side of the nonmagnetic conductive layer.
10. The element according to claim 8, wherein:
the first magnetic layer has a first surface, a second surface that is opposed to the first surface, and a third surface that is different from the first surface and the second surface; and
the nonmagnetic conductive layer is connected to at least one of the second surface and the third surface of the first magnetic layer.
11. The element according to claim 10, wherein:
the nonmagnetic conductive layer is connected to the third surface of the first magnetic layer; and
the nonmagnetic conductive layer decreases in thickness from the second surface to the first surface, or the one face of the nonmagnetic conductive layer is recessed in a direction from the first surface to the second surface.
12. The element according to claim 10, wherein the one face of the nonmagnetic conductive layer is connected to the second surface of the first magnetic layer.
13. The element according to claim 12, wherein the second surface of the first magnetic layer is tilted relative to the first surface.
14. The element according to claim 10, wherein the nonmagnetic conductive layer is connected to the second surface and the third surface of the first magnetic layer.
15. A magnetoresistive element comprising:
a nonmagnetic conductive layer having two end faces in a direction along which the nonmagnetic conductive layer extends;
a first magnetic layer connected to the nonmagnetic conductive layer near one end face of the two end faces;
a second magnetic layer connected to the nonmagnetic conductive layer so as to be distant from the first magnetic layer in the direction;
a first magnetic electrode connected to the first magnetic layer;
a second magnetic electrode connected to the second magnetic layer;
a first nonmagnetic electrode connected to the nonmagnetic conductive layer, a voltage being applied between the first nonmagnetic electrode and the first magnetic electrode through the first magnetic layer; and
a second nonmagnetic electrode connected to the nonmagnetic conductive layer, a current being caused to flow between the second nonmagnetic electrode and the second magnetic electrode through the second magnetic layer,
the nonmagnetic conductive layer decreasing in volume toward the one face.
16. The element according to claim 15, wherein the first magnetic layer and the second magnetic layer are on the same side of the nonmagnetic conductive layer.
17. The element according to claim 15, wherein:
the first magnetic layer has a first surface, a second surface that is opposed to the first surface, and a third surface that is different from the first surface and the second surface; and
the nonmagnetic conductive layer is connected to at least one of the second surface and the third surface of the first magnetic layer.
18. The element according to claim 17, wherein:
the nonmagnetic conductive layer is connected to the third surface of the first magnetic layer; and
the nonmagnetic conductive layer decreases in thickness from the second surface to the first surface, or the one face of the nonmagnetic conductive layer is recessed in a direction from the first surface to the second surface.
19. The element according to claim 17, wherein the one face of the nonmagnetic conductive layer is connected to the second surface of the first magnetic layer.
20. The element according to claim 19, wherein the second surface of the first magnetic layer is tilted relative to the first surface.