Embodiments of the invention concern a method and an apparatus for determining a minimum/maximum of a plurality of binary values, more specifically, embodiments of the invention concern a method and an apparatus for determining from a plurality of binary values stored at different locations remote from a central processor a minimum/maximum value.
Memory elements and integrated circuits (IC) need to be tested to ensure proper operation, and in particular, testing is a requirement during IC or memory development in manufacturing. During testing such devices under test (DUTs) are exposed to various types of stimulus signals, and responses from the devices are measured, processed, and usually compared to an expected response. Such testing may be carried out by automated test equipment (ATE) which usually performs these tasks according to a device-specific test program.
Examples for such automated test equipment are the Verigy V93000 Series and the Verigy V5000 Series, the first being a platform for testing system-on-a-chip, system-on-a-package, and high-speed memory devices. The latter series is for testing memory devices including flash memory and multi-chip packages at wafer sort and final test.
In such automated test equipment or testers, a plurality of test results might be obtained and stored at various locations remote from a central processing area. For example the results might be generated on the basis of different stimulus signals provided by a plurality of processing devices, or processors, which not only generate the stimulus signals, but also receive the response signals from the device under test or from a plurality of devices under test. For a test action, usually a test routine is executed on all channels in parallel. The test routines being executed or the data used by the test routines may differ between channels. However, for fast test execution it may be desired to make use of broadcast and common read wherever possible which necessitates that related test data of different channels is stored in all these channels at the same memory address. Finding out how to allocate memory chunks of certain sizes over certain sets of channels is done by the tester memory management. For some complex test applications there may be a constraint that related data of different channels has to be aligned at the same address which results in unused gaps in the tester memory. With increasing computing power of embedded processor inside the test processors each processor may manage its memory on its own and in the communication between the central processor and the test processors only symbolic addresses for memory chunks may be used. By this the constraint that related data of different channels has to be aligned at the same address may be avoided. However this may necessitate that the central processor knows the minimum or maximum of some values stored in the test processors. One example for this is the question: given a set of channels, how much memory can one still allocate over all these channels, i.e., what is the minimum size of the largest contiguous block of free memory on each of these channels?
According to an embodiment, a method for determining a minimum/maximum of a plurality of binary values held by a plurality of processor memories or memories associated with respective processors may have the steps of: (a) determining a bit position in the plurality of binary values subsequent to which all bit values are the same, wherein step (a) initially may have the steps of: (a.1) commonly reading all binary values from all memories and generating a bit-wise OR combination and a bit-wise AND combination of the commonly read binary values, and (a.2) based on the bit-wise OR combination and the bit-wise AND combination of the commonly read binary values, determining the bit location in the plurality of binary values subsequent to which all bit values are the same; (b) selecting from the plurality of binary values, those binary values, the bit value of which at the bit position determined in (a) and all subsequent bit positions, if any, comprises a predetermined value;(c) repeating steps (a) and (b), wherein step (a) is repeated on the basis of the binary values selected in step (b) until only one selected binary value, or a plurality of matching binary values, remain; and(d) providing the remaining binary value as the minimum/maximum.
According to another embodiment, a computer storage medium may have a computer readable program code for carrying out, when executing the program code by a processor, a method for determining a minimum/maximum of a plurality of binary values held by a plurality of processor memories or memories associated with respective processors, the method having the steps of: (a) determining a bit position in the plurality of binary values subsequent to which all bit values are the same, wherein the determining initially may have the steps of: (a.1) commonly reading all binary values from all memories and generating a bit-wise OR combination and a bit-wise AND combination of the commonly read binary values, and (a.2) based on the bit-wise OR combination and the bit-wise AND combination of the commonly read binary values, determining the bit location in the plurality of binary values subsequent to which all bit values are the same; (b) selecting from the plurality of binary values, those binary values, the bit value of which at the bit position determined in the determining and all subsequent bit positions, if any, comprises a predetermined value; (c) repeating the determining and selecting, wherein the determining is repeated on the basis of the binary values selected in the selecting until only one selected binary value, or a plurality of matching binary values, remain; and (d) providing the remaining binary value as the minimum/maximum.
According to another embodiment, a computer program product may have a computer readable program code for carrying out, when executing the program code by a processor, a method for determining a minimum/maximum of a plurality of binary values held by a plurality of processor memories or memories associated with respective processors, the method having the steps of: (a) determining a bit position in the plurality of binary values subsequent to which all bit values are the same, wherein the determining initially may have the steps of: (a.1) commonly reading all binary values from all memories and generating a bit-wise OR combination and a bit-wise AND combination of the commonly read binary values, and (a.2) based on the bit-wise OR combination and the bit-wise AND combination of the commonly read binary values, determining the bit location in the plurality of binary values subsequent to which all bit values are the same; (b) selecting from the plurality of binary values, those binary values, the bit value of which at the bit position determined in the determining and all subsequent bit positions, if any, comprises a predetermined value; (c) repeating the determining and selecting, wherein the determining is repeated on the basis of the binary values selected in the selecting until only one selected binary value, or a plurality of matching binary values, remain; and (d) providing the remaining binary value as the minimum/maximum.
According to another embodiment, a computer program may have a program code for carrying out, when executing the program code by a processor, a method for determining a minimum/maximum of a plurality of binary values held by a plurality of processor memories or memories associated with respective processors, the method having the steps of: (a) determining a bit position in the plurality of binary values subsequent to which all bit values are the same, wherein the determining initially may have the steps of: (a.1) commonly reading all binary values from all memories and generating a bit-wise OR combination and a bit-wise AND combination of the commonly read binary values, and (a.2) based on the bit-wise OR combination and the bit-wise AND combination of the commonly read binary values, determining the bit location in the plurality of binary values subsequent to which all bit values are the same; (b) selecting from the plurality of binary values, those binary values, the bit value of which at the bit position determined in the determining and all subsequent bit positions, if any, comprises a predetermined value; (c) repeating the determining and selecting, wherein the determining is repeated on the basis of the binary values selected in the selecting until only one selected binary value, or a plurality of matching binary values, remain; and (d) providing the remaining binary value as the minimum/maximum.
According to another embodiment, a system for determining a minimum/maximum of a plurality of binary values held by a plurality of memories associated with respective processors may have: a central processor; a logic coupled to the central processor and configured to output a bit-wise OR combination and a bit-wise AND combination of a plurality of input values to the central processor; and a plurality of memories associated with respective processors, each of the memories being coupled to the logic and configured to hold one of the plurality of binary values, wherein the central processor is configured to operate in accordance with a method for determining a minimum/maximum of a plurality of binary values held by a plurality of processor memories or memories associated with respective processors, the method having the steps of: (a) determining a bit position in the plurality of binary values subsequent to which all bit values are the same, wherein the determining initially may have the steps of: (a.1) commonly reading all binary values from all memories and generating a bit-wise OR combination and a bit-wise AND combination of the commonly read binary values, and (a.2) based on the bit-wise OR combination and the bitwise AND combination of the commonly read binary values, determining the bit location in the plurality of binary values subsequent to which all bit values are the same; (b) selecting from the plurality of binary values, those binary values, the bit value of which at the bit position determined in the determining and all subsequent bit positions, if any, comprises a predetermined value; (c) repeating the determining and selecting, wherein the determining is repeated on the basis of the binary values selected in the selecting until only one selected binary value, or a plurality of matching binary values, remain; and (d) providing the remaining binary value as the minimum/maximum.
According to another embodiment, an apparatus for determining a minimum/maximum of a plurality of binary values held by a plurality of processor memories or memories associated with respective processors may have: a processor configured to operate in accordance with a method for determining a minimum/maximum of a plurality of binary values held by a plurality of processor memories or memories associated with respective processors, the method having the steps of: (a) determining a bit position in the plurality of binary values subsequent to which all bit values are the same, wherein the determining initially may have the steps of: (a.1) commonly reading all binary values from all memories and generating a bit-wise OR combination and a bit-wise AND combination of the commonly read binary values, and (a.2) based on the bit-wise OR combination and the bit-wise AND combination of the commonly read binary values, determining the bit location in the plurality of binary values subsequent to which all bit values are the same; (b) selecting from the plurality of binary values, those binary values, the bit value of which at the bit position determined in the determining and all subsequent bit positions, if any, comprises a predetermined value; (c) repeating the determining and selecting, wherein the determining is repeated on the basis of the binary values selected in the selecting until only one selected binary value, or a plurality of matching binary values, remain; and (d) providing the remaining binary value as the minimum/maximum.
Embodiments of the invention provide an apparatus for determining a minimum/maximum of a plurality of binary values which comprises a processor which is configured to operate in accordance with the method of embodiments of the invention.
Further embodiments of the invention provide a system for determining a minimum/maximum of a plurality of binary values, wherein the system comprises a central processor, a logic coupled to the central processor and configured to output a bit-wise OR combination and a bit-wise AND combination of a plurality of input values to the central processor, and a plurality of memories associated with respect to processors, each memory being coupled to the logic and coupled to hold one of the plurality of binary values, wherein the central processor is configured to operate in accordance with the method of embodiments of the invention.
Embodiments of the present invention will be described in the following with reference to the accompanying drawings in which:
In the embodiment shown in
In the above-described environment, the tester 100 comprises the front end processors P1 to Pn, each of which holds an integer value. The central processor 102 may now need to know the minimum or maximum of all those values as fast as possible. In accordance with the conventional tester shown in
While the central processor 102, in general, can handle simple processing steps or computations quite fast, it is not possible to obtain the minimum or maximum of all values fast, as in general, the communication between the central processor 102 and the respective individual processor P1 through Pn is slow, compared to the just-mentioned computation, i.e., the number of communication steps needed dominates the total time needed, provided simple processing steps or computations are to be carried out in the central processor.
Therefore, a need exists to provide an improved approach for determining from a plurality of binary values stored in the different locations, a minimum or maximum value in a processing and time efficient manner. The fast finding of one or more minimum/maximum value(s) may be used in a test system and, more specifically, for managing the memory of distributed processors of such a test system. One example of such a test system uses a plurality of channels (the measuring unit for one pin of DUT) each of which has its own test processor with associated memory.
In the following, examples for quickly determining the minimum or maximum of values stored in the distributed processor P1 to Pn using common read capabilities will be described with further reference to
In step S100 the following variables are initialized:
After the initialization in step S100, a value for j which is smaller than i is determined such that bits (k−1) . . . (j+1) of the binary representation of all values provided from the processors P1 to Pn are equal. Then, bits (k−1) . . . (j+1) of the minimum/maximum value may be the same, and bit j of the minimum may be “0”, and bit j of the maximum may be “1”, respectively. To determine position j, the central processor 102 takes the bit-wise “AND” and the bit-wise “OR” obtained through two common read operations of the binary representations of the numbers of the processors (see step S102). At the bit positions where these two bit patterns are equal all values provided from the processors may be equal. At bit positions where these two bit patterns differ, at least one processor may have provided a 0-bit and at least one may have provided a 1-bit. Thus j is the most significant bit position where the bit-wise AND and the bit-wise OR differ, which can be computed in the central processor by simply examining the individual bits. After this step, bits (k−1) . . . j are known, i.e., i can be set to j (see step S104).
In step S106 the up to now known bits (k−1) to 0 for R are determined by setting bits k−1 to j+1 of R to the matching bits of the results of the bit-wise AND and bit-wise OR operation, setting bit j of R (if any) to 0 in case of search for the minimum and to 1 in case of search for the maximum, and setting the remaining bits j−1 to 0 of R (if any) to 0.
In step S108, it is determined whether j is smaller than or equal to 0. In case it is, the process ends at step S110.
Otherwise, the process proceeds to step S112, where the search is now restricted to those results where the bits (k−1) . . . i equal the already known bits of the smallest maximum. For preparing this step, the central processor 102 communicates the up to now known bits of the minimum/maximum to all processor P1 to Pn as well as the result of the bit-wise “AND” and the bit-wise “OR” of all values in the preceding iteration (in the first iteration the results of the bit-wise “AND” and the bit-wise “OR” of all original values stored in the processors). Further, the central processor 102 now instructs all processors P1 to Pn to provide the following values in the next step as follows (see steps S112 to S118):
To be more specific, in step S118 the modified values are determined dependent on whether a common read with “AND”-operation or a common read with “OR”-operation is to be carried out. For the “common read with “AND”” operation the respective processors are instructed to return the up to now known bits of the minimum for bits (k−1) . . . i. In addition, also the bits of the preceding “OR” of the stored values are provided. In a similar manner, the processors are instructed to return respective modified values for the “common read with “OR”” operation. Again, the up to now known bits of the minimum bits (k−1) . . . i are returned, and the remaining bits are those of the “AND” of all preceding bits. The just-described modified values do not influence the bit-wise “AND” or the bit-wise “OR” over the values of the processors of the restricted search space.
The above process is repeated on the basis of the original/modified values until j≦0 (see steps 108, 110).
In the following examples will be described illustrating the above approach for determining a minimum/maximum value.
Determining a minimum value from values stored in nine processors P1 to P9.
Original values:
Iteration #1
Values given from each processor to the central processor in this iteration:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 4(j=4)
=> now the 4 most significant bits of the result are known.
Iteration #2
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 3 (j=3)
=> now the 5 most significant bits of the result are known.
Iteration #3
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 2(j=2)
Iteration #4
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): −1(j=−1)
Up to now known bits of result generated by:
Determining a maximum value from values stored in nine processors P1 to P9.
Original values:
Iteration #1
Values given from each processor to the central processor in this iteration:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 4(j=4)
=> now the 4 most significant bits of the result are known.
Iteration #2
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 1(j=1)
Iteration #3
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 0(j=0)
Up to now known bits of result generated by:
Determining a minimum value from values stored in eleven processors P1 to P11. (As to the determination for the values for the bit-wise AND and bit-wise OR please see above examples 1 and 2)
Original values:
Iteration #1
Values given from each processor to the central processor in this iteration:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 5(j=5)
Iteration #2
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 3(j=3)
Iteration #3
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 1 (j=1)
Iteration #4
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): −1(j=−1) (i.e. all bits match)
Up to now known bits of result generated by:
Determining a maximum value from values stored in eleven processors P1 to P11. (As to the determination for the values for the bit-wise AND and bit-wise OR please see above examples 1 and 2)
Original values:
Iteration #1
Values given from each processor to the central processor in this iteration:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 5(j=5)
Iteration #2
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 4(j=4)
Iteration #3
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 2(j=2)
Iteration #4
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): −1(j=−1) (i.e. all bits match)
Up to now known bits of result generated by:
Determining a minimum value from values stored in eighteen processors P1 to P18. (As to the determination for the values for the bit-wise AND and bit-wise OR please see above examples 1 and 2)
Original values:
Iteration #1
Values given from each processor to the central processor in this iteration:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 4(j=4)
Iteration #2
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 3(j=3)
Iteration #3
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 2(j=2)
Iteration #4
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 1(j=1)
Iteration #5
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): −1 (j=−1) (i.e. all bits match)
Up to now known bits of result generated by:
Determining a maximum value from values stored in eighteen processors P1 to P18. (As to the determination for the values for the bit-wise AND and bit-wise OR please see above examples 1 and 2)
Original values:
Iteration #1
Values given from each processor to the central processor in this iteration:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): 4(j=4)
Iteration #2
Up to now known bits of result generated by:
Highest bit position where bit-wise AND and bit-wise OR differ (counting least significant bit as 0): −1 (j=−1)
Up to now known bits of result generated by:
In accordance with the embodiments described above, the number of iterations needed for this way of determining the minimum is only the number of bits, in which the binary representation of any two of the original values, differ. Each iteration necessitates one common read with “AND”, one common read with “OR”, and one broadcast.
The number of bits used to represent numbers is typically 32, or may even be 64, and the number of bits in which a set of values differ, may be even less. If the number n of processors is significantly larger than the number of bits in which the set of values differ, for example, larger by several thousand, the “fast minimum finding” is significantly faster than the trivial way indicated above, which needs n read operations.
Embodiments of the invention were described using a plurality of processors P1 to Pn each providing a binary value. Other embodiments may use only a single processor or a reduced number of processors each holding in respective registers of memory elements associated therewith the binary values the maximum/minimum of which need to be determined by the central processor.
The above-described method can be implemented in hardware or in software. In addition, the implementation can be in a digital storage medium, for example a disc or a CD comprising electronically readable control signals, which can act together with a programmable computer system, for executing the method according to embodiments of the present invention. Generally, the invention is also a computer program product having a program code for executing the method according to embodiments of the present invention being stored on a machine readable carrier and executed when the computer program product runs of a computer. In other words, the invention is also a computer program having program codes for carrying out the method when the computer program runs on a computer.
While this invention has been described in terms of several embodiments, there are alterations, permutations, and equivalents which fall within the scope of this invention. It should also be noted that there are many alternative ways of implementing the methods and compositions of the present invention. It is therefore intended that the following appended claims be interpreted as including all such alterations, permutations and equivalents as fall within the true spirit and scope of the present invention.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/EP08/06437 | 8/5/2008 | WO | 00 | 4/26/2011 |