IP Library Granted Patent US 7,398,288
Granted Patent B2
US 7,398,288 · App. 10/651,922 · Granted Jul 8, 2008

Efficient implementation of a filter

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,398,288
App. No.
10/651,922
Granted
Jul 8, 2008
Kind
B2
Abstract

A Finite Impulse Response (FIR) filter is implemented in software on a general purpose processor in a manner which reduces the number of memory accesses as compared to conventional methods. In particular, an efficient implementation for a general purpose processor having a substantial number of registers includes inner and outer loop code which together make K ⁡ [ ( L 1 + L 2 L 1 ⁢ L 2 ) ⁢ N + L 2 L 1 + 1 ] memory accesses and KN multiply-accumulates, where L 1 is the number of output vector elements computed during each pass through the outer loop and where L 2 is the number of taps per output vector element computed during each pass through the inner loop. The efficient implementation exploits L 1 +2L 2 general purpose registers. For an embodiment in which L 1 =L 2 =8, inner and outer loop code make K ⁡ ( N 4 + 2 ) memory accesses, which for filter implementations with large numbers of taps, approaches a 4× reduction in the number of memory accesses as compared to conventional methods.

Claims (86)

1. An apparatus that includes a communication facility that executes on a processor that also employs other non-communications functionality, the apparatus comprising receive path signal processing structures, wherein at least one of the receive path signal processing structures includes at least one invocation of discrete-time filter code for filtering input vector data, the discrete-time filter code executable by the processor to incrementally load respective portions of the input vector data and coefficient vector data from addressable storage into respective registers of the processor and perform successive scalar multiply-accumulate operations thereupon to accumulate output vector data into other respective registers of the processor wherein the discrete-time filter code includes Finite Impulse Response (FIR) filter code.

2. A host signal processing implementation of a modem wherein at least a substantial portion of the modem implementation executes on a processor that a host system also employs for application functionality, the modem implementation comprising:

receive path signal processing structures,

wherein at least one of the receive path signal processing structures includes at least one invocation of discrete-time filter code for filtering input vector data, the discrete-time filter code executable by the processor to incrementally load respective portions of the input vector data and coefficient vector data from addressable storage into respective registers of the processor and perform successive scalar multiply-accumulate operations thereupon to accumulate output vector data into other respective registers of the processor.

3. The modem implementation of claim 2 ,

wherein the discrete-time filter code includes Finite Impulse Response (FIR) filter code.

4. The modem implementation of claim 2 ,

wherein memory access overhead for any single one of the loads is amortized over multiple of the multiply-accumulate operations.

5. The modem implementation of claim 2 ,

wherein the discrete-time filter code exhibits an execution ratio of less than two of the loads per multiply-accumulate operation.

6. The modem implementation of claim 2 ,

wherein the operation upon respective portions of the input and coefficient vector data in first and second sets of the general purpose registers includes execution of successive multiply-accumulate operations.

7. The modem implementation of claim 2 , further comprising:

transmit path signal processing structures.

8. The modem implementation of claim 7 , wherein at least one of the transmit path signal processing structures includes at least one invocation of discrete-time filter code executable by the processor to incrementally load respective portions of input and coefficient vector data from addressable storage into respective registers of the processor and perform successive scalar multiply-accumulate operations thereupon to accumulate output vector data into other respective registers of the processor.

9. A software modem comprising:

receive path signal processing structures defined at least in part by instructions executable by a processor and encoded in computer readable media,

wherein at least one of the receive path signal processing structures invoke discrete-time filter code for filtering input vector data, the discrete-time filter code operates on the input vector data, coefficient vector data and output vector data for which, at any given time, an operated upon portion thereof is represented entirely in registers of the processor and successive portions of the input and coefficient vector data are loaded into respective ones of the registers under control of the discrete-time filter code, and

wherein the processor is a general purpose processor suitable for execution of application code concurrent with the discrete-time filter code.

10. The software modem of claim 9 ,

wherein the discrete-time filter code includes Finite Impulse Response (FIR) filter code.

11. The software modem of claim 9 ,

wherein memory access overhead for any single one of the loads is amortized over multiple of the accumulations of the output vector data.

12. The software modem of claim 9 ,

wherein the discrete-time filter code exhibits an execution ratio of less than two of the loads per operation to accumulate.

13. The software modem of claim 9 ,

wherein the operation upon respective portions of the input and coefficient vector data in first and second sets of the general purpose registers includes execution of successive multiply-accumulate operations.

14. The software modem of claim 9 , wherein the receive path signal processing structures include one or more of:

an interpolator,

an echo canceller, and

an equalizer,

that invoke the discrete-time filter code.

15. A method of implementing a software modem without use of a digital signal processor (DSP), the method comprising:

receiving an output of an A/D converter;

invoking discrete-time filter code for filtering input vector data, the discrete-time filter code incrementally loading respective portions of the input vector data and coefficient vector data into respective registers of a processor and performing successive operations thereupon to accumulate output vector data into other respective registers of the processor, the discrete-time filter code exhibiting an execution ratio of less than two input and coefficient data loads per operation to accumulate; and

passing data to a receive process wherein the data is based at least in part on the output of the A/D converter and the output vector data.

16. The method of claim 15 ,

wherein the discrete-time filter code includes Finite Impulse Response (FIR) filter code.

17. The method of claim 15 , further comprising: invoking one or more of:

an interpolator,

an echo canceller, and

an equalizer,

that invoke the discrete-time filter code.

18. The method of claim 15 ,

wherein the operations to accumulate include successive scalar multiply-accumulate operations.

19. The method of claim 15 ,

wherein L 1 of the registers are allocated to the respective portions of the output vector data, L 2 of the registers are allocated to the respective portions of the input vector data, and L 2 of the registers are allocated to the respective portions of the coefficient vector data;

wherein the input and coefficient vector data loads number no more than approximately

K

[

(

L

1

+

L

2

L

1

L

2

)

N

+

L

2

L

1

+

1

]

per KN scalar multiply-accumulate operations, where K is the number of elements in the output vector and N is the number of taps of the discrete-time filter.

20. An apparatus comprising: a general purpose processor having general purpose registers;

memory coupled to the general purpose processor for storing input, coefficient and output vector data;

a digital-to-analog converter and an analog-to-digital converter for coupling the general purpose processor to an analog communications medium;

means executable on the general purpose processor and including a discrete-time filter implementation for filtering the input vector data, the discrete-time filter implementation incrementally loading respective portions of the input and coefficient vector data into first and second sets of the general purpose registers and operating thereupon to accumulate the output vector data into a third set of the general purpose registers without use of a digital signal processor (DSP).

21. The apparatus of claim 20 ,

wherein the discrete-time filter implementation includes a Finite Impulse Response (FIR) filter.

22. The apparatus of claim 20 ,

wherein memory access overhead for any single one of the incremental loads is amortized over multiple of the accumulations of the output vector data.

23. The apparatus of claim 20 ,

wherein the discrete-time filter implementation exhibits an execution ratio of less than two of the incremental loads per operation to accumulate.

24. The apparatus of claim 20 ,

wherein the operation upon respective portions of the input and coefficient vector data in first and second sets of the general purpose registers includes execution of successive multiply-accumulate operations.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE ERROR IN RECORDING THE MERGER PREVIOUSLY RECORDED AT REEL: 047357 FRAME: 0302. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 22, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048674/0834 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER PREVIOUSLY RECORDED ON REEL 047195 FRAME 0658. ASSIGNOR(S) HEREBY CONFIRMS THE THE EFFECTIVE DATE IS 09/05/2018. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047357/0302 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047195/0658 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
MERGER Recorded Apr 18, 2005
From: ALTOCOM, INC.
To: BROADCOM CORPORATION
Reel/Frame 016098/0059 →