throbber
120
`
`Fingerprint Matching on Splash 2
`
`Chapter 10
`
`single match takes, say, one millisecond of CPU time, matching against a database
`of one million fingerprints would require a total of 10° seconds of CPU time.If we
`have to process 100 queries per day, we would need 10° seconds or 27.78 hours
`of CPU time alone, not including the I/O time in reading the fingerprints from the
`database.
`In order to provide a reasonable response time for each query, commercial sys-
`tems use dedicated hardware accelerators or application-specific integrated circuits
`(ASICs). While application-specific architectures and ASICs have been designed to
`meet the computing requirements of complex image processing tasks, such designs
`have the following two major limitations: (i) once fabricated, they are difficult to
`modify; and (ii) the cost of building special-purpose application accelerators is very
`expensive for low-volumeapplications. Both of these limitations have been the driv-
`ing force behind the design of custom computing machines (CCMs) using reconfig-
`urable logic arrays knownasfield-programmable gate arrays (FPGAs). An attached
`processor built with FPGAs can overcome the two limitations noted above. High
`performance is achieved with FPGAs by exploiting an important principle: most of
`the processing time of a compute-intensive job is spent within a small portion of
`its execution code [3], and if an architecture can provide efficient execution sup-
`port for the frequently executed code, then the overall performance can be improved
`substantially. Portions of the matching algorithm have been identified for implemen-
`tation on Splash 2, leaving the remainder to be implemented using software on the
`host.
`
`The goal of this chapter is threefold. First, it describes a successful application
`using Splash 2. Second, we demonstrate that a suitable mapping of an algorithm
`to a given architecture results in excellent performance. Third, we illustrate how
`FPGAscanfacilitate this mapping process without sacrificing speed and flexibility.
`In fact, FPGAsoffer greater flexibilty since the hardware is customized to meet the
`requirements of the algorithm.
`This chapter is organized as follows. In Section 2, a brief introduction to pat-
`tern recognition systems is given, followed by definition of the terminology used
`in fingerprint matching, and introduction of various stages in an AFIS. Section 3
`briefly reviews the Splash 2 architecture and its programming paradigm. The finger-
`print matching algorithm and its computational requirement are briefly presented in
`Section 4. The hardware-software design is presented in Section 5. The hardware
`componentof the parallel algorithm has been simulated using the Splash simulator.
`Theresults of simulation and synthesis are discussed in Section 6. The synthesized
`logic has been executed on a set of actual fingerprints. For measuring execution
`speed, a synthetic database of 10,000 fingerprints has been created from 100 real
`fingerprints. The execution speed of the matching module is analyzed in Section 7,
`followed by conclusions in Section 8.
`
`10.2 BACKGROUND
`
`This section is devoted to an introduction to pattern recognition systems, some
`basic definitions with respect to fingerprints, and automatic fingerprint identification
`systems (AFIS).
`,
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 120
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 120
`
`

`

`Section 10.2
`
`Background
`
`121
`
`10.2.1 Pattern Recognition Systems
`
`Pattern recognition techniques are used to classify or describe complex patterns or
`objects by means of some measured properties or features. A pattern is an entity,
`vaguely defined, that could be given a name. A speech waveform, a person’s face,
`and a piston head are examples of patterns. The goals of pattern recognition are to
`(i) assign a pattern to a heretofore unknownclassof patterns (clustering) or (ii) iden-
`tify a pattern as a memberof an already knownclass (classification). Two examples
`of the recognition problem are identifying a suspect in a criminal case based on
`fingerprints, and finding defects in a printed circuit board.
`A pattern recognition system (PRS)classifies an object into one of several
`predefined classes. The input to a PRS is a set of N measurements represented
`by an N-dimensional vector called a pattern vector. A PRS can be used to com-
`pletely automate the decision-making process without any human intervention. A PRS
`requires data acquisition via some sensors, data representation, and data analysis or
`classification. The data are usually either in the form of pictures, as in the case of
`fingerprint matching, or one-dimensional time signals, as in the case of speech recog-
`nition. Although these images orsignals can be interpreted, analyzed, or classified
`by trained human operators, pattern recognition systems can provide morereliable
`and faster analysis, often at a lower cost.
`The design of a PRS involves the following three steps:
`
`e Sensing
`e Representation
`e Decision making
`
`The problem domain influences the choice of sensor, representation, and decision
`making model. An ideal representation is characterized by the following desirable
`properties; it is
`
`1. Provided with discriminatory information at several levels of resolution (detail)
`2. Easily computable
`3. Amenable to automated matching algorithms
`4. Stable and invariant to noise and distortions
`5. Efficient and compact
`
`The compactness property of a representation often constrains its discriminating
`power.
`The pattern recognition problem is difficult because various sources of noise
`distort the patterns, and often there exists a substantial amountof variability among
`the patterns belonging to the same category [5]. For example, the character ‘A’
`written by different people looks different, though we assign the same class label
`‘A’ to all of them. Hence, it is not appropriate to use the raw pattern vector for
`classification. Invariant features that characterize a set of patterns are used to represent
`a class of patterns. Several issues arise, such as what features should be used and~
`how they should be extracted reliably. The features of a pattern are the input to a
`classification stage. The challenge in designing a recognition system is in extraction
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 121
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 121
`
`

`

`122
`
`Fingerprint Matching on Splash 2
`
`Chapter 10
`
`of features that can tolerate the intra-class variations and still possess the inter-class
`discriminating power. If the extracted features have sufficient discriminating power,
`then the decision making stage is simple. Conversely, a sophisticated decision making
`stage can compensate for an unreliable feature extraction stage. In practice, we never
`have a noiseless input pattern, an ideal representation, perfect feature extraction, or
`robust decision maker. Imperfections in any of these stages may result in classification
`error. The goal of a pattern recognition system is to minimize the classification error.
`Manysuccessful pattern recognition systems have been built in the area of document
`analysis, medical diagnosis, and fingerprint identification. A large number of books
`and survey papers have been written on pattern recognition. Readers interested in
`more details are referred to [5].
`
`10.2.2 Terminology
`
`The structural features that are commonly extracted from the gray-level input finger-
`print image are ridge bifurcations and ridge endings. Each of the features has three
`components, namely, the x-coordinate, the y-coordinate, and the local ridge direction
`at the feature location, as shown in Figure 10.4. Many other features that have been
`used for fingerprint matching are derived from this basic three-dimensional feature
`vector [1].
`Definitions of some relevant fingerprint-related terms are given below. Readers
`interested in more details are referred to [2].
`
`e Fingerprint image: A digitized image of a fingerprint impression usually con-
`taining 512 x 512 pixels and 256 pray levels.
`e Fingerprint card: A paper card with a provision to record impressions of all
`10 fingers of a person, including other textual details (such as name, sex, and
`age) useful for identification.
`
` Minutia (x, y) X
`
`FIGURE 10.4 Components of a
`Minutia Feature
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 122
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 122
`_—
`
`

`

`Section 10.2
`
`Background
`
`123
`
`a Gray-level Fingerprint
`
`FIGURE 10.5 A Core Point Marked on
`
`Pattern area: The area of the image where the fingerprint pattern is located.
`Ridge: A black line in a fingerprint image. See Figure 10.1.
`Valley: A white line in a fingerprint image. See Figure 10.1.
`Ridge bifurcation point: A point where a ridge branches into two ridges. See
`Figure 10.2(a).
`Ridge end point: A point where a ridge stops flowing. See Figure 10.2(b).
`e Minutia: A ridge ending or bifurcation point.
`e Classification: Based on the ridge flow type, the process of categorizing fin-
`gerprints into one of the following five classes: (i) arch, (ii) loop, (iti) whorl,
`(iv) double loop, and (v) accidental. Thefirst three fingerprint classes are shown
`in Figure 10.1.
`e Matching: The process of comparing a pair of fingerprints based on their minu-
`tiae feature sets. The AFIS systems usually determine a list of probables (possi-
`ble matches) from the database, often sorted on a matching score that indicates
`the degree of match.
`e Core point: For whorls, loops, and double loops, the core point is defined as
`the topmost point on the innermost ridge, assuming the fingerprint is oriented.
`See Figure 10.5.
`
`10.2.3 Stages in AFIS
`
`An AFIS is a pattern recognition system for fingerprint matching. A typical AFIS
`consists of various processing stages as shown in Figure 10.6. For the purpose of
`automation, a suitable representation of fingerprints is essential. Clearly,
`the raw
`digital image (set of pixels) of a fingerprint itself does not meet the requirements ~
`of an ideal representation described earlier. Hence, high-level structural features are
`extracted from the fingerprint image for the purpose of representation and matching.
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 123
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 123
`
`

`

`
`
`124
`
`Fingerprint Matching on Splash 2
`
`Chapter 10
`
`
`
`Image Acquisition
`
`(Optional) Feature Extraction
`
`
`ManualFeature Editing
`
`
`
`
`Matching
`
`ManualVerification
`
`
`
`FIGURE 10.6 Stages in an Automatic Fingerprint Identification System (AFIS)
`
`The commercially available fingerprint systems typically use ridge bifurcations
`and ridge endings as features (see Figure 10.2). Because of the large size of the fin-
`gerprint database andthe noisy fingerprints encounteredin practice,it is very difficult
`to achieve a reliable one-to-one matching in all test cases. Therefore, the commer-
`cial systems provide a ranked list of possible matches (usually the top 10 matches)
`that are then verified by a human expert. The matching stage uses the position and
`orientation of these features and the total number of such features. As a result, the
`accuracy of feature extraction has a strong impact on the overall accuracy of finger-
`print matching. Reliable and robust features can simplify the matching algorithm and
`obviate the manual verification stage.
`One of the main problems in extracting structural features is the presence of
`noise in the fingerprint image. Commonly used methodsfor taking fingerprint impres-
`sions involve applying a uniform layer of ink on the finger androlling the finger on
`paper. This leadsto the following problems. Smudgyareas in the image are created by
`overinked areasof the finger, while breaks in ridges are created by underinkedareas.
`Additionally, the elastic nature of the skin can change the positional characteristics
`of the fingerprint features depending on the pressure applied on the fingers. Though
`inkless methods for taking fingerprint impressions are now available, these methods
`still suffer from the positional shifting caused by the skin elasticity. The AFIS used
`for criminal identification poses yet another problem. A noncooperative attitude of
`suspects or criminals in providing the impressions leads to smearing parts of the
`fingerprint impression. Thus, noisy features are inevitable in real fingerprint images.
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 124
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 124
`
`

`

`Section 10.4
`
`Fingerprint Matching Algorithm
`
`125
`
`The matching module must berobust to overcome the noisy features generated by
`the feature extraction module.
`The functioning of an AFIS can be described starting with the input stage. A
`gray-scale fingerprint imageis obtained using a scanneror a camera. Recently, inkless
`methods have beenusedforthis stage [7]. The input image needs enhancementbefore
`further processing can be done. This stage involves image processing techniques to
`minimize noise and enhance image contrast. A feature extraction stage locates the
`minutiae points in the enhanced image.Often,it is difficult to extract minutiae reliably
`from noisy inputs. In such cases, a humanfingerprint expert interactively updates the
`location of the minutiae. The set of minutiae forms the input to a matcher. The
`matcher reads fingerprint features from the database and matches these with the
`query fingerprint feature set. It outputs a list of probables from the database in order
`of their degree of match. The system outputis verified by the human expert to arrive
`at the final decision for each query fingerprint.
`
`10.3 SPLASH 2 ARCHITECTURE AND PROGRAMMING MODELS
`
`Wereview the major components of the Splash 2 system that are used by ourfinger-
`print matching algorithm. (For details, refer to the chapters on Splash 2 architecture
`and programming.)
`Each Splash 2 processing board has 16 Xilinx 4010s as Processing Elements
`(PEs X1-X16) in addition to a seventeenth Xilinx 4010 (XO) that controls the data
`flow into the processor board. Each PE has 512 KB of memory. The Sun SPARC-
`station host can read/write this memory. The PEs are connected through a crossbar
`that is programmed by XO. There is a 36-bit linear data path (SIMD Bus) running
`through all the PEs. The PEs can read data either from their respective memory or
`from any other PE. A broadcastpath also exists by suitably programming X0.
`The Splash 2 system supports several models of computation, including PEs
`executing a single instruction on multiple data (SIMD mode) and PEs executing
`multiple instructions on multiple data (MIMD mode). It can also execute the same or
`different instructions on single data by receiving data through the global broadcast
`bus. The most common mode of operation is systolic, in which the SIMD Busis
`used for data transfer. Also, individual memory available with each PE is used to
`conveniently store temporary results and tables.
`To program Splash 2, we need to program each of the PEs (X1—X16), the
`crossbar, and the host interface. The crossbar sets the communication paths for any
`arbitrary pattern of communication between PEs. In case the crossbar is used, XO
`needs to be programmed. The host interface handles data transfers in and out of the
`Splash 2 board.
`
`10.4 FINGERPRINT MATCHING ALGORITHM
`
`image and-
`The feature extraction process takes the input fingerprint gray-level
`extracts the minutiae features described in Section 1, making noefforts to distinguish
`between the two categories (ridge endings and ridge bifurcations). Figure 10.7 shows
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 125
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 125
`
`

`

`126
`
`Fingerprint Matching on Splash 2
`
`Chapter 10
`
`FIGURE 10.7 Feature Extraction. (a) A gray-scale image of a fingerprint, (b) its skeleton
`with features
`
`a gray-scale fingerprint image and its skeleton image where these features are marked.
`In this section, an algorithm for matching rolled fingerprints against a database of
`rolled fingerprints is presented. A query fingerprint is matched with every fingerprint
`in the database, discarding candidates whose matching scores are below a user-
`specified threshold. Rolled fingerprints usually contain a large number of minutiae
`(between 50 and 100). Since the main focus of this chapter is on parallelizing the
`matching algorithm, we assume that the features have been extracted from the fin-
`gerprint images and the important information is available. In particular, we assume
`that the core point of the fingerprint is known and that the fingerprints are oriented
`properly.
`
`10.4.1 Minutia Matching
`
`Matching a query and database fingerprint is equivalent to matching their minutiae
`sets. Each query fingerprint minutia is examined to determine whether there is a
`corresponding database fingerprint minutia. Two minutiae are said to be paired or
`matched if their components (x, y,@) are equal within some tolerance after regis-
`tration, which is the process of aligning the two sets of minutiae along a common
`core point (see section 4.2 for precise definitions). Three situations arise as shown in
`Figure 10.8.
`
`1. A database fingerprint minutia matches the query fingerprint minutia in all the
`components (paired minutiae);
`2. A database fingerprint minutia matches the query fingerprint minutia in the x
`and y coordinates, but does not match in the direction (minutiae with unmatched
`angle);
`3. No database fingerprint minutia matches
`(unmatched minutia).
`
`the query fingerprint minutia
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 126
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 126
`
`

`

`Section 10.4
`
`Fingerprint Matching Algorithm
`
`127
`
`Paired minutiae
`
`Paired minutiae
`
`Minutiae with
`unmatched angle
`
`
`
`
`
`Unmatched minutiae
`Unmatched minutiae
`(Lying outside tolerance box)
`(No pairing possible)
`Po
`
`"1 Tolerance box
`© Queryfingerprint minutiae
`© Databasefingerprint minutiae
`
`FIGURE 10.8 Different Situations in
`Minutia Matching
`
`Ofthe three cases described above, only in the first case are the minutiae said to be
`paired.
`
`10.4.2 Matching Algorithm
`
`The following notation is used in the sequential and parallel algorithms described
`below. Let the query fingerprint be represented as an n-dimensional feature vec-
`tor £4 — (f9,f%.......,.f%). Note that each of the n elements is a feature vector cor-
`responding to one minutia, and the ith feature vector contains three components,
`fi = (fix), fi), Si@)).
`The components of a feature vector are shown geometrically in Figure 10.4.
`The query fingerprint core point is located at (Cf, C}). Similarly, let the rth ref-
`erence (database) fingerprint be represented as an m,-dimensional feature vector
`fr = (ff, £3,...0fm,)? and the reference fingerprint core point
`is located at
`(Cy, C5).
`Let (xj, ¥,) and (x? ' ye) define the bounding box for the query fingerprint,
`where x;
`is the x-coordinate of the top-left corner of the box and x? is the x-
`coordinate of the bottom-right corner of the box. Quantities y, and ye are defined
`similarly. A bounding boxis the smallest rectangle that enclosesall the feature points.
`Note that the query fingerprint {4 may or may not belong to the fingerprint database
`fD. The fingerprints are assumedto be registered with a known orientation. Hence,
`there is no need of normalization for rotation.
`The matching algorithm is based on finding the number of paired minutiae
`between each database fingerprint and the query fingerprint. It uses the concept of
`minutiae matching described in Section 4.1. A tolerance boxis shown graphically in
`Figure 10.9. In order to reduce the amount of computation, the matching algorithm
`takes into account only those minutiae that fall within a common bounding box.
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 127
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 127
`
`

`

`128
`
`Fingerprint Matching on Splash 2
`
`Chapter 10
`
`Minutia point
`
`Idsin(®)
`
`Idcos(®)
`
`
`
`
`Core point ———> c Z
`
`xX
`
`FIGURE 10.9 Tolerance Box for X- and Y-components of a Minutia Point
`
`The common bounding boxis the intersection of the bounding box for query and
`reference (database) fingerprints. Once the count of matching minutiae is obtained, a
`matching score is computed. The matching score is used for deciding the degree of
`match. Finally, a set of top-scoring reference fingerprints is obtained as a result of
`matching.
`In order to accommodate the shift in the minutia features, a tolerance box is
`created around each feature. The size of the box depends on the ridge widths and
`distance from the core point in the fingerprint.
`In the
`The sequential matching algorithm is described in Figure 10.10.
`sequential algorithm, the tolerance box (shown in Figure 10.9 with respect to a query
`fingerprint minutia) is calculated for the reference (database) fingerprint minutia. In
`the parallel algorithm described in the next section, it is calculated for the query
`fingerprint (as in Figure 10.9). A similar sequential matching algorithm is described
`by Wegstein [9]. Depending on the desired accuracy, more than one finger could be
`used in matching. In that case, a composite score is computed for eachset.
`
`10.5 PARALLEL MATCHING ALGORITHM
`
`Weparallelize the matching algorithm so that it utilizes the specific characteristics
`of the Splash 2 architecture. While performing this mapping, we need to take into
`accountthe limitations of the available FPGA technology. This is consistent with the
`approaches taken in hardware-software codesign. Any preprocessing needed on the
`query minutiae set is a one-time operation, whereas reference fingerprint minutiae
`matching is a repetitive operation. Computing the matching score involves floating-
`point division. The floating-point operations and one-time operations are performed
`in software on the host, whereas the repetitive operations are delegated to the FPGA-
`based PEs of Splash 2. The parallel version of the algorithm involves operations on
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 128
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 128
`
`

`

`Section 10.5
`
`Parallel Matching Algorithm
`
`129
`
`Input: Query fingerprint n-dimensional feature vector f4.and the rolled fingerprint database fD—ffry.
`The rth database fingerprint is represented as an m,-dimensional featurevector.
`Output: A list of top ten records from the database with matching score > T.
`Begin
`
`For r = 1 to N do
`1. Register the database fingerprint with respect to the core point (C7, C}) of the
`query fingerprint:
`For i = 1 to m, do
`ff@)=ff@-c
`FO) = FO-G
`2. Compute the common bounding box for the query and reference fingerprints:
`Let (x, yi) and (x?, y?) define the bounding box for the query fingerprint.
`Let (x!, yt) and (x2, y’) define the bounding box for the rth reference fingerprint.
`The intersection of these two boxes is the common bounding box.
`Let the query print have M/ andreference print have N? minutiae in this box.
`3. Compute the tolerance vector for ith feature vector f/:
`If the distance from the reference core point to the current reference feature is less than K
`then
`
`tf (x) = ld cos(@),
` (y) = Id sin(@), and
`f(D) = ks,
`
`else
`
`U(x) =k,
`tf (y) = ke, and
`1 (O) =ks,
`where /, ki, k. and k3 are prespecified constants determined
`empirically based on the average ridge width,
`@ is the angle of the line joining the core point and the ith feature with the x-axis,
`and d is the distance of the feature from the core point.
`Tolerance box is shown geometrically in Figure 10.9.
`4. Match minutiae:
`Two minutiae ff and f4 are said to match if the following conditionsare satisfied:
`fi@)- 7) < f1@) < f7@) +47),
`fi) -70) s ff) s 7) +47), and
`fi -7@ < #7) < fF7@)+4),
`where #7 = (17 (x), t7(y), t7 (@)) is the tolerance vector.
`Set the numberof paired features, m, = 0;
`For all query features fi. j=1,2,...M2, do
`If fi matches with any feature in fj, i = 1,2, ..., NZ, then increment m).
`Markthe corresponding feature in f* as paired.
`5. Compute the matching score (MS (q,r)):
`wan?
`
`MS(q,r) = tan
`Sort the database fingerprints and obtain top 10 scoring database fingerprints.
`
`FIGURE 10.10 Sequential Fingerprint Matching Algorithm
`
`End
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 129
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 129
`
`

`

`X1
`
`130
`
`Fingerprint Matching on Splash 2
`
`Chapter 10
`X16
`
`Collect_flag
`
`From host
`
`
`
`
`FIGURE 10.11
`
`Fingerprint Matching in Splash 2
`
`the host, on XO, and on each PE. The schematic of fingerprint matching algorithm
`using Splash 2 is shown in Figure 10.11.
`One of the main constructs of the parallel algorithm is a lookup table. The
`lookup table consists of all possible points within the tolerance box that a feature
`may be mapped to. The Splash 2 data paths for the parallel algorithm are shown in
`Figure 10.12.
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 130
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 130
`
`

`

`Section 10.5
`
`Parallel Matching Algorithm
`
`131
`
`Fingerprint Database
`
`FIGURE 10.12 Data Flow in Parallel Matching Algorithm
`
`10.5.1 Preprocessing on the Host
`
`The host processes the query and databasefingerprints as follows. The query finger-
`print is read first and the following preprocessing is done:
`1. The core point is assumed to be available. For each query feature faj = 1,2,
`...n, generate a tolerance box. Enumerate a total of (t, x t, x t@) grid points
`in this box, where t,
`is the tolerance in x,
`ty is the tolerance in y and fg is
`tolerance in 6.
`2. Allocate each feature to one PE in Splash 2. Repeat this cyclically, that is,
`features 1-16 are allocated to PEs X1 to X16, features 17-32 are allocated to
`PEs X1 to X16, and so on.
`3. Initialize the lookup tables by loading the grid points within each tolerance box
`in step (1) into the memory.
`
`the tolerance box is computed with respect to the query
`In this algorithm,
`fingerprint features. The host then reads the database of fingerprints and sends their
`feature vectors for matching to the Splash 2 board.
`For each database fingerprint, the host performs the following operations:
`
`1. Read the feature vectors.
`2. Register the features as described in step (1) of the sequential algorithm in
`Figure 10.10.
`3. Send each of the feature vectors over the broadcast bus to all PEsif it is within
`the bounding box of the query fingerprint.
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 131
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 131
`
`

`

`132
`
`Fingerprint Matching on Splash 2
`
`Chapter 10
`
`(2) Broadcast feature vector
`
`Broadcast Bus
`
`(3) Check for paired feature
`
`Global OR Bus
`
`‘0’ or ‘1’
`
`
`
`
`
`(4) Increment counterif paired
`feature; store in memory and
`reset after all features
`processed.
`
`(5) Host reads count from X0
`
`(X, Y, 8) (1) Feature vector received from host
`
`—{] FingerprintDatabase
`
`Host (Sun SPARC)
`
`FIGURE 10.13 Data Flow in XO
`
`For each databasefingerprint, the host then reads the numberof paired features m),
`that was computed by the Splash 2 system, r = 1, ... N. Finally, the matching score
`is computed as in the sequential method.
`
`10.5.2 Computations on Splash
`
`The computations carried out on each PE of Splash 2 are described below. As men-
`tioned earlier, XO plays a special role in controlling the crossbar in Splash 2.
`
`1. Operations on X0:
`Each database feature vector received from the host is broadcast to all PEs. If
`it is matched with a feature in a lookup table, the PE drives the Global OR bus
`high. When the OR busis high, XO increments a counter. The host reads this
`counter value (m,) after all the feature vectors for the current database finger-
`print have been processed. Operations on XO are highlighted in Figure 10.13.
`2. Operations on each PE:
`Onreceiving the broadcasted feature, a PE computes its address in the lookup
`table through a hashing function. If the data at the computed addressis a ‘1’,
`then the feature is paired, and the PE drives the Global OR bus high. Operations
`on a PE are highlighted in Figure 10.14.
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 132
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 132
`
`

`

`Section 10.5
`
`Parallel Matching Algorithm
`
`133
`
`(2) Check Lookup Table for‘1’
`at address of feature vector;
`
`indicates paired.
`
`(3) If paired driveOR (X, Y, 8) from Database
`Busto ‘1’.
`
`Global OR Bus
`
`FIGURE 10.14 Data Flow in a PE
`
`10.5.3 VHDLSpecification for XO
`
`Weillustrate how the operations on XO are customized by describing segments of
`its VHDL code. The tasks carried out by the other PEs are relatively simpler. The
`following functions are carried out by XO:
`
`1. Broadcast feature vector to all PEs
`2. Update a counterif at least one of the bits of the Global OR busis ‘1’, and
`3. Reset the counter after all the minutiae of a database fingerprint are processed
`and the result is updated in XO memory.
`
`Five segments of VHDL code are shown in Figure 10.15 and are briefly
`described here. Segment 1 (lines 1.1-1.7) shows the signal declarations. The hard-
`ware buses have been directly mapped to bit vectors in VHDL. Some of the program
`variables have been tailored for the range needed based on the application require-
`ment (such as count, features). Segment 2 describes the padding instructions. Note
`that because of using input-output pads, there is a delay in a signal reaching all the
`PEsafter it has been seen by XO. The delay is accounted for by using a data pipeline
`of suitable length (in our case the pipeline is 6 stages deep). The code in line 1.7
`combined with code segment 5 (line 5.1) show the use of the pipeline. XO maintains
`this pipeline by writing data into the pipeline and flushing out the last data sets by
`writing zeros. The code in XO looksat the end of the pipeline. Thus, the data is seen
`by XO code when it would have reached other PEs.
`By setting suitable configuration parameters, XO can be set to broadcast the
`contents of the SIMD Busto all PEs. To set this mode, code segment 3 is used.
`In code segment4, the collection of OR flags from all 16 PEs (PE X1 through
`X16) is being checked for any possible match by comparing with a bit vector ofall
`0’s. If any of the bits is a ‘1’, we increment the counter count.
`If the input for a new databaserecord is initiated, indicated by the 33rd bit of
`the SIMD bus, then the final paired count and the numberof features for the previous
`record is stored in memory. The two counters count and features are reset to zero.
`These activities are carried out in code segment 5.
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 133
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 133
`
`

`

`134
`
`Fingerprint Matching on Splash 2
`
`Chapter 10
`
`Signal declarations — (Segment 1)
`
`Bit_Vector(15 downto 0);
`:
`SIGNAL Data
`Bit_Vector(17 downto 0);
`:
`SIGNAL Address
`natural range 0 to 255 := 0;
`:
`SIGNAL
`count
`
`SIGNAL_features : natural range 0 to 255 := 0;
`
`SIGNAL
`SIMD
`:
`Bit_Vector(35 downto 0);
`SIGNAL
`Collect-flag
`=:
`Bit.Vector(15 downto 0);
`SIGNALfeat_pipeline
`pipeline;
`
`Connections to I/O pads — (Segment 2)
`
`(XO_Mem_A, Address);
`pad_output
`(XO_Mem_D,Data);
`pad_output
`(XO_SIMD, SIMD);
`padtInput
`pad_Output (XO_XB_Data, Xbar_Out);
`pad_tInput
`(X0_-GOR-Result_in, Collect_flag);
`
`Setting XO to be the crossbar master — (Segment 3)
`
`XO_Xbar_En_L <= ’0’;
`X0_X16_Disable <= 71’;
`X0_Xbar_Send <= ’1’;
`
`— (Segment4)
`
`IF (Collect_flag /= itobv(0,16)) THEN
`count <= count + 1;
`
`ENDIF;
`
`— New person record, store present counters and then reset — (Segment5)
`
`3.1-
`5.2-
`5.3—
`5.4—
`5.5—
`5.6-
`3.7-
`
`IF (feat_pipeline(0)(32) = °1’) THEN
`Data(7 downto 0) <= itobv(count,8);
`Data(15 downto 8) <= itobv(features,8);
`count <= 0;
`features <= 0;
`Address <= itobv(bvtoi(Address) + 1,18);
`
`ENDIF;
`
`FIGURE 10.15
`
`VHDLSpecification Segments for X0
`
`10.6 SIMULATION
`
`AND SYNTHESIS RESULTS
`
`The VHDL behavioral modeling code for PEs XO-—X16 has been tested using the
`Splash simulation environment. The simulation environment loads the lookup tables
`and crossbar configuration file into the simulator. Note that the Splash simulator runs
`independently of the Splash 2 hardware and runs on the host. The input data are read
`from a specified file, and the data on each of the signals declared in the VHDL code
`can be traced as a function of time. A sample output of simulation using test inputs
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 134
`
`Petitioner Microsoft Corporation - Ex. 1007, p. 134
`
`

`

`Section 10.6
`
`Simulation and Synthesis Results
`
`135
`
`
`
`A
`
`|”
`
`s
`
`“
`o
`
`22E6D90
`-
`TFACB7S
`216BDB7 — FACETS
`0E87D84
`of
`04D5B09
`
`a
`
`.
`
`1352B7A
`2zEsp90
`11D3FAC
`
`
`
`
` 2 Edit Jump View Hise
`800
`860
`960
`920
`940
`960
`
` BOARDS(8)}/BD/XO/X0_CLK |
`
`
`
`
`
`O)/BD/MO/K0_GOR_RESULT
`—
`(O}BD/XO/SIMD(260) (26:0)
`216BDB7
`MROKBAR_OUT(260)(26:0)
`ZAD6B16
`AT_PIPELINE(0)(260)(26:0)
`1352B7A
`VROJFEAT_PIPELINE(0)(32)
`HXD/FEAT_PIPELINE(0)(35)
`(0MBD/XO/ADDRESS(17:0)
`ARDS(0)/BD/XD/DATA(15:0)
`ARDS(0)/BD/XO/FEATURES
`}BOARDS(0)/BD/XO/COUNT
`DPXOFCOLLECT

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket