← Back to Patent Explorer
US5384722A Expired / Lapsed US ⏱️ 0.0 years remaining

Apparatus and method for determining the Manhattan distance between two points

Assignee: Intel Corp
•
Filing: 1993-03-10
•
Granted: 1995-01-24
•
Expires: 2013-03-10
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract An apparatus and method for generating the absolute value of a difference. The apparatus and method include mechanisms to subtract a first operand from a second operand to generate a first difference and to subtract the second operand from the first operand to generate a second difference. The present invention also includes an apparatus and method for selecting either the first difference or the second difference depending on which is positive. In this manner, the absolute value of the difference between the first operand and the second operand is generated.

Inventors

  • 👤 Carol Dulong

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-08 15:17
CPC Classifications
G; G06; G06F; G06F7/00; G06F7/38; G06F7/48; G06F7/544; G06F2207/00; G06F2207/544; G06F2207/5442

Claims Analysis

Total Claims: 15
Claim 1
Independent Claim 599 words
An apparatus for performing pattern recognition comprising: a memory storage area to store operands for execution; a first arithmetic logic pipeline coupled to the memory storage area for performing distance calculations between points of an unknown pattern and a reference pattern; and a second arithmetic logic pipeline coupled to the memory storage area for performing best path calculations between said points of said unknown pattern and said reference pattern, said second arithmetic logic pipeline executing in parallel with said first arithmetic logic pipeline; a first pointer pipeline associated with the first arithmetic pipeline for preparing pointer values for accessing memory to supply operand to the first arithmetic logic pipeline; a second pointer pipeline associated with the second arithmetic pipeline for preparing pointer values for accessing memory to supply operands to the second arithmetic logic pipeline wherein the first pointer pipeline and the second pointer pipeline operate in parallel with said first arithmetic pipeline and said second arithmetic pipeline; and wherein first arithmetic logic pipeline includes means for executing instructions to calculate distance between a first point in the unknown pattern and a second point in the reference pattern, the means for executing including: means for providing a first operand specified within a first instruction during a first instruction cycle and a third operand specified within a second instruction during a second instruction cycle immediately following the first instruction cycle; means for providing a second operand specified within said first instruction during a first instruction cycle and a fourth operand specified within the second arithmetic instruction during the second instruction cycle; first means coupled to receive the first operand and the second operand in the first instruction cycle for subtracting the first operand from the second operand to generate a first result during the first instruction cycle, wherein the first means is also coupled to receive the third operand and the fourth operand in the second instruction cycle for subtracting the third operand from the fourth operand to generate a third result during the second instruction cycle; second means coupled to receive the first operand and the second operand in the first instruction cycle for subtracting the second operand from the first operand to generate a second result during the first instruction cycle, wherein the second means is also coupled to receive the third operand and the fourth operand in the second instruction cycle for subtracting the fourth operand from the third operand to generate a fourth result during the second instruction cycle; and a multiplexer coupled to receive the first result and the second result during the first instruction cycle to select the positive of either the first result or the second result during the first instruction cycle, such that the absolute value of the difference between the first operand and the second operand is produced in the first instruction cycle, and wherein the multiplexer is also coupled to receive the third result and the fourth result during the second instruction cycle to select the positive of either the third result or the fourth result during the second instruction cycle, such that the absolute value of the difference between the third operand and the fourth operand is produced in the second instruction cycle, wherein the first pointer pipeline and the second pointer pipeline prepare pointer values during the first instruction cycle to allow the third operand and the fourth operand to be available at the second instruction cycle to the means for executing, wherein the first arithmetic pipeline calculates distance between the first point in the unknown pattern and the second point in the reference pattern in consecutive cycles.
Claim 2
Independent Claim 599 words
An apparatus for performing pattern recognition comprising: a memory storage area to store operands for execution; a first arithmetic logic pipeline coupled to the memory storage area for performing distance calculations between points of an unknown pattern and a reference pattern; and a second arithmetic logic pipeline coupled to the memory storage area for performing best path calculations between said points of said unknown pattern and said reference pattern, said second arithmetic logic pipeline executing in parallel with said first arithmetic logic pipeline; a first pointer pipeline associated with the first arithmetic pipeline for preparing pointer values for accessing memory to supply operand to the first arithmetic logic pipeline; a second pointer pipeline associated with the second arithmetic pipeline for preparing pointer values for accessing memory to supply operands to the second arithmetic logic pipeline wherein the first pointer pipeline and the second pointer pipeline operate in parallel with said first arithmetic pipeline and said second arithmetic pipeline; and wherein first arithmetic logic pipeline includes means for executing instructions to calculate distance between a first point in the unknown pattern and a second point in the reference pattern, the means for executing including: means for providing a first operand specified within a first instruction during a first instruction cycle and a third operand specified within a second instruction during a second instruction cycle immediately following the first instruction cycle; means for providing a second operand specified within said first instruction during a first instruction cycle and a fourth operand specified within the second arithmetic instruction during the second instruction cycle; first means coupled to receive the first operand and the second operand in the first instruction cycle for subtracting the first operand from the second operand to generate a first result during the first instruction cycle, wherein the first means is also coupled to receive the third operand and the fourth operand in the second instruction cycle for subtracting the third operand from the fourth operand to generate a third result during the second instruction cycle; second means coupled to receive the first operand and the second operand in the first instruction cycle for subtracting the second operand from the first operand to generate a second result during the first instruction cycle, wherein the second means is also coupled to receive the third operand and the fourth operand in the second instruction cycle for subtracting the fourth operand from the third operand to generate a fourth result during the second instruction cycle; and a multiplexer coupled to receive the first result and the second result during the first instruction cycle to select the positive of either the first result or the second result during the first instruction cycle, such that the absolute value of the difference between the first operand and the second operand is produced in the first instruction cycle, and wherein the multiplexer is also coupled to receive the third result and the fourth result during the second instruction cycle to select the positive of either the third result or the fourth result during the second instruction cycle, such that the absolute value of the difference between the third operand and the fourth operand is produced in the second instruction cycle, wherein the first pointer pipeline and the second pointer pipeline prepare pointer values during the first instruction cycle to allow the third operand and the fourth operand to be available at the second instruction cycle to the means for executing, wherein the first arithmetic pipeline calculates distance between the first point in the unknown pattern and the second point in the reference pattern in consecutive cycles.
Claim 3
Dependent Claim 24 words
The apparatus as defined in claim 1 wherein the first means for subtracting and the second means for subtracting operate at the same time.
Claim 4
Dependent Claim 33 words
The apparatus as defined in claim 1 wherein the first pointer pipeline and the second pointer pipeline update pointer values during the first instruction cycle based on information specified in the first instruction.
Claim 5
Dependent Claim 45 words
The apparatus defined in claim 1 wherein the memory storage area comprises a first memory coupled to the first arithmetic pipeline, a second memory coupled to the second arithmetic pipeline, and a register file coupled to the first arithmetic pipeline and the second arithmetic pipeline.
Claim 6
Dependent Claim 40 words
The apparatus defined in claim 4 wherein the first pointer pipeline provides pointer values to access the first memory and the register file and the second pointer pipeline provides pointer values to access the second memory and the register file.
Claim 7
Dependent Claim 58 words
The apparatus defined in claim 1 further comprising a decoder coupled to the first arithmetic pipeline, the second arithmetic pipeline, the first pointer pipeline and the second pointer pipeline to decode the first instruction and the second instruction for execution by the first arithmetic pipeline, the second arithmetic pipeline, the first pointer pipeline and the second pointer pipeline.
Claim 8
Independent Claim 615 words
An apparatus for performing pattern recognition comprising: a memory storage area to store operands for execution; a first arithmetic logic pipeline coupled to the memory storage area for performing distance calculations between points of an unknown pattern and a reference pattern; and a second arithmetic logic pipeline coupled to the memory storage area for performing best path calculations between said points of said unknown pattern and said reference pattern, said second arithmetic logic pipeline executing in parallel with said first arithmetic logic pipeline; a first pointer pipeline associated with the first arithmetic pipeline for preparing pointer values for accessing memory to supply operands to the first arithmetic logic pipeline; a second pointer pipeline associated with the second arithmetic pipeline for preparing pointer values for accessing memory to supply operands to the second arithmetic logic pipeline, wherein the first pointer pipeline and the second pointer pipeline operate in parallel with said first arithmetic pipeline and said second arithmetic pipeline; and wherein first arithmetic logic pipeline includes means for executing instructions to calculate distance between a first point in the unknown pattern and a second point in the reference pattern, the means for executing including: means for providing a first operand specified within a first instruction during a first instruction cycle and a third operand specified within a second instruction during a second instruction cycle immediately following the first instruction cycle; means for providing a second operand specified within said first instruction during a first instruction cycle and a fourth operand specified within the second arithmetic instruction during the second instruction cycle; a first arithmetic logic unit coupled to receive the first operand and the second operand in the first instruction cycle to subtract the first operand from the second operand to generate a first result during the first instruction cycle, wherein the first arithmetic logic unit is also coupled to receive the third operand and the fourth operand in the second instruction cycle to subtract the third operand from the fourth operand to generate a third result during the second instruction cycle; a second arithmetic logic unit coupled to receive the first operand and the second operand in the first instruction cycle to subtract the second operand from the first operand to generate a second result during the first instruction cycle, wherein the second arithmetic logic unit is also coupled to receive the third operand and the fourth operand in the second instruction cycle to subtract the fourth operand from the third operand to generate a fourth result during the second instruction cycle; and a multiplexer coupled to receive the first result and the second result during the first instruction cycle to select the positive of either the first result or the second result during the first instruction cycle, such that the absolute value of the difference between the first operand and the second operand is produced in the first instruction cycle, and wherein the multiplexer is also coupled to receive the third result and the fourth result during the second instruction cycle to select the positive of either the third result or the fourth result during the second instruction cycle, such that the absolute value of the difference between the third operand and the fourth operand is produced in the second instruction cycle, wherein the first pointer pipeline and the second pointer pipeline prepare pointer values during the first instruction cycle to allow the third operand and the fourth operand to be available at the second instruction cycle to the means for executing, wherein the first arithmetic pipeline calculates distance between the first point in the unknown pattern and the second point in the reference pattern in two consecutive cycles without a pointer update delay.
Claim 9
Independent Claim 615 words
An apparatus for performing pattern recognition comprising: a memory storage area to store operands for execution; a first arithmetic logic pipeline coupled to the memory storage area for performing distance calculations between points of an unknown pattern and a reference pattern; and a second arithmetic logic pipeline coupled to the memory storage area for performing best path calculations between said points of said unknown pattern and said reference pattern, said second arithmetic logic pipeline executing in parallel with said first arithmetic logic pipeline; a first pointer pipeline associated with the first arithmetic pipeline for preparing pointer values for accessing memory to supply operands to the first arithmetic logic pipeline; a second pointer pipeline associated with the second arithmetic pipeline for preparing pointer values for accessing memory to supply operands to the second arithmetic logic pipeline, wherein the first pointer pipeline and the second pointer pipeline operate in parallel with said first arithmetic pipeline and said second arithmetic pipeline; and wherein first arithmetic logic pipeline includes means for executing instructions to calculate distance between a first point in the unknown pattern and a second point in the reference pattern, the means for executing including: means for providing a first operand specified within a first instruction during a first instruction cycle and a third operand specified within a second instruction during a second instruction cycle immediately following the first instruction cycle; means for providing a second operand specified within said first instruction during a first instruction cycle and a fourth operand specified within the second arithmetic instruction during the second instruction cycle; a first arithmetic logic unit coupled to receive the first operand and the second operand in the first instruction cycle to subtract the first operand from the second operand to generate a first result during the first instruction cycle, wherein the first arithmetic logic unit is also coupled to receive the third operand and the fourth operand in the second instruction cycle to subtract the third operand from the fourth operand to generate a third result during the second instruction cycle; a second arithmetic logic unit coupled to receive the first operand and the second operand in the first instruction cycle to subtract the second operand from the first operand to generate a second result during the first instruction cycle, wherein the second arithmetic logic unit is also coupled to receive the third operand and the fourth operand in the second instruction cycle to subtract the fourth operand from the third operand to generate a fourth result during the second instruction cycle; and a multiplexer coupled to receive the first result and the second result during the first instruction cycle to select the positive of either the first result or the second result during the first instruction cycle, such that the absolute value of the difference between the first operand and the second operand is produced in the first instruction cycle, and wherein the multiplexer is also coupled to receive the third result and the fourth result during the second instruction cycle to select the positive of either the third result or the fourth result during the second instruction cycle, such that the absolute value of the difference between the third operand and the fourth operand is produced in the second instruction cycle, wherein the first pointer pipeline and the second pointer pipeline prepare pointer values during the first instruction cycle to allow the third operand and the fourth operand to be available at the second instruction cycle to the means for executing, wherein the first arithmetic pipeline calculates distance between the first point in the unknown pattern and the second point in the reference pattern in two consecutive cycles without a pointer update delay.
Claim 10
Dependent Claim 32 words
The apparatus defined in claim 7 wherein the first pointer pipeline and the second pointer pipeline update pointer values during the first instruction cycle based on information specified in the first instruction.
Claim 11
Dependent Claim 45 words
The apparatus defined in claim 7 wherein the memory storage area comprises a first memory coupled to the first arithmetic pipeline, a second memory coupled to the second arithmetic pipeline, and a register file coupled to the first arithmetic pipeline and the second arithmetic pipeline.
Claim 12
Dependent Claim 40 words
The apparatus defined in claim 9 wherein the first pointer pipeline provides pointer values to access the first memory and the register file and the second pointer pipeline provides pointer values to access the second memory and the register file.
Claim 13
Dependent Claim 58 words
The apparatus defined in claim 7 further comprising a decoder coupled to the first arithmetic pipeline, the second arithmetic pipeline, the first pointer pipeline and the second pointer pipeline to decode the first instruction and the second instruction for execution by the first arithmetic pipeline, the second arithmetic pipeline, the first pointer pipeline and the second pointer pipeline.
Claim 14
Independent Claim 631 words
A system performing pattern recognition comprising: a bus to provide a communication pathway between system components; a central processor coupled to said bus; and a pattern recognition mechanism coupled to said bus, wherein said pattern recognition mechanism further comprises a memory storage area to store operands for execution; a first arithmetic logic pipeline coupled to the memory storage area for performing distance calculations between points of an unknown pattern and a reference pattern; and a second arithmetic logic pipeline coupled to the memory storage area for performing best path calculations between said points of said unknown pattern and said reference pattern, said second arithmetic logic pipeline executing in parallel with said first arithmetic logic pipeline; a first pointer pipeline associated with the first arithmetic pipeline for preparing pointer values for accessing memory to supply operands to the first arithmetic logic pipeline; a second pointer pipeline associated with the second arithmetic pipeline for preparing pointer values for accessing memory to supply operands to the second arithmetic logic pipeline, wherein the first pointer pipeline and the second pointer pipeline operate in parallel with said first arithmetic pipeline and said second arithmetic pipeline; and wherein first arithmetic logic pipeline includes means for executing instructions to calculate distance between a first point in the unknown pattern and a second point in the reference pattern, the means for executing including: means for providing a first operand specified within a first instruction during a first instruction cycle and a third operand specified within a second instruction during a second instruction cycle immediately following the first instruction cycle; means for providing a second operand specified within said first instruction during a first instruction cycle and a fourth operand specified within the second arithmetic instruction during the second instruction cycle; first means coupled to receive the first operand and the second operand in the first instruction cycle for subtracting the first operand from the second operand to generate a first result during the first instruction cycle, wherein the first means is also coupled to receive the third operand and the fourth operand in the second instruction cycle for subtracting the third operand from the fourth operand to generate a third result during the second instruction cycle; second means coupled to receive the first operand and the second operand in the first instruction cycle for subtracting the second operand from the first operand to generate a second result during the first instruction cycle, wherein the second means is also coupled to receive the third operand and the fourth operand in the second instruction cycle for subtracting the fourth operand from the third operand to generate a fourth result during the second instruction cycle; and a multiplexer coupled to receive the first result and the second result during the first instruction cycle to select the positive of either the first result or the second result during the first instruction cycle, such that the absolute value of the difference between the first operand and the second operand is produced in the first instruction cycle, and wherein the multiplexer is also coupled to receive the third result and the fourth result during the second instruction cycle to select the positive of either the third result or the fourth result during the second instruction cycle, such that the absolute value of the difference between the third operand and the fourth operand is produced in the second instruction cycle, wherein the first pointer pipeline and the second pointer pipeline prepare pointer values during the first instruction cycle to allow the third operand and the fourth operand to be available at the second instruction cycle to the means for executing, wherein the first arithmetic pipeline calculates distance between the first point in the unknown pattern and the second point in the reference pattern in consecutive cycles.
Claim 15
Independent Claim 631 words
A system performing pattern recognition comprising: a bus to provide a communication pathway between system components; a central processor coupled to said bus; and a pattern recognition mechanism coupled to said bus, wherein said pattern recognition mechanism further comprises a memory storage area to store operands for execution; a first arithmetic logic pipeline coupled to the memory storage area for performing distance calculations between points of an unknown pattern and a reference pattern; and a second arithmetic logic pipeline coupled to the memory storage area for performing best path calculations between said points of said unknown pattern and said reference pattern, said second arithmetic logic pipeline executing in parallel with said first arithmetic logic pipeline; a first pointer pipeline associated with the first arithmetic pipeline for preparing pointer values for accessing memory to supply operands to the first arithmetic logic pipeline; a second pointer pipeline associated with the second arithmetic pipeline for preparing pointer values for accessing memory to supply operands to the second arithmetic logic pipeline, wherein the first pointer pipeline and the second pointer pipeline operate in parallel with said first arithmetic pipeline and said second arithmetic pipeline; and wherein first arithmetic logic pipeline includes means for executing instructions to calculate distance between a first point in the unknown pattern and a second point in the reference pattern, the means for executing including: means for providing a first operand specified within a first instruction during a first instruction cycle and a third operand specified within a second instruction during a second instruction cycle immediately following the first instruction cycle; means for providing a second operand specified within said first instruction during a first instruction cycle and a fourth operand specified within the second arithmetic instruction during the second instruction cycle; first means coupled to receive the first operand and the second operand in the first instruction cycle for subtracting the first operand from the second operand to generate a first result during the first instruction cycle, wherein the first means is also coupled to receive the third operand and the fourth operand in the second instruction cycle for subtracting the third operand from the fourth operand to generate a third result during the second instruction cycle; second means coupled to receive the first operand and the second operand in the first instruction cycle for subtracting the second operand from the first operand to generate a second result during the first instruction cycle, wherein the second means is also coupled to receive the third operand and the fourth operand in the second instruction cycle for subtracting the fourth operand from the third operand to generate a fourth result during the second instruction cycle; and a multiplexer coupled to receive the first result and the second result during the first instruction cycle to select the positive of either the first result or the second result during the first instruction cycle, such that the absolute value of the difference between the first operand and the second operand is produced in the first instruction cycle, and wherein the multiplexer is also coupled to receive the third result and the fourth result during the second instruction cycle to select the positive of either the third result or the fourth result during the second instruction cycle, such that the absolute value of the difference between the third operand and the fourth operand is produced in the second instruction cycle, wherein the first pointer pipeline and the second pointer pipeline prepare pointer values during the first instruction cycle to allow the third operand and the fourth operand to be available at the second instruction cycle to the means for executing, wherein the first arithmetic pipeline calculates distance between the first point in the unknown pattern and the second point in the reference pattern in consecutive cycles.

References Cited (Backward Citations)

US4373191A Cited
US4849921A Cited
US4953115A Cited
US4982352A Cited
US5148386A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1998-01-23 1998-07-25 1999-01-24 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2002-01-23 2002-07-25 2003-01-24 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2006-01-23 2006-07-25 2007-01-24 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag