Jeff Kidder works as a senior software engineer at the Jones Farm campus of Intel in Hillsboro, Oregon, the site for most of the Intel Architecture Labs. He is the project lead of a team that is responsible for implementing and optimizing speech compression algorithms to run on the Intel Architecture for use in Intel products. Work is done in an open office environment, with a team of eight loosely divided into three project teams. The education background of the team ranges from B.A. to Ph.D.
Real time speech compression is used in Intel products such as ProShareTM video conferencing systems. Speech compression algorithms process audio information to produce a dense representation that can be stored or transmitted. It is then rendered again as audio that is perceptually close to the original input. The mathematics involved includes adaptive filtering (to model the short term spectrum), vector quantization (to efficiently represent parameters and residual, or error, information), and spectral methods including the fast fourier transform (fft).
"In order to be useful for communications," Jeff reports, "the algorithm must operate in 'real time'; which is to say, if the input is 30 milliseconds of speech signal, the processing time of the algorithm -- and any other work the processor is doing concurrently -- must complete in less than 30 milliseconds. If this were not the case, the input would come in faster than the output was produced and there would be a progressive buildup at the encoder, and 'tearing' at the decoder. This often results in pops or gaps."
Thus, it is important to ensure that the algorithms are implemented efficiently, both from a algorithmic point of view, and for the particular processor in question. "Processor specific optimization is an interesting problem domain," says Jeff. "Once an algorithmic approach has been chosen the code must be scheduled in such a way that the microprocessor will achieve high throughput. In many cases C code can be written such that a compiler can generate near optimal code. However for some key or complicated routines hand scheduling in assembly language is required. This has the feel of a problem in combinatorics, trying to satisfy a number of simultaneous constraints with a minimum number of instruction cycles. Formally, the mathematics is relatively shallow, but it appeals to many of the same talents."
Optimization takes place in floating point for the PentiumTM processor and integer arithmetic for processors with MMX(TM) technology. A good general source of optimization problems for the Pentium processor would be to optimize functions which compute limited precision versions of several standard functions faster than the built in hardware routines can compute full precision versions: 1/x, sqrt, sin, log, 2^x.
Jeff has a B.S. in mathematics from the University of California Santa Barbara (UCSB) College of Creative Studies. This small program of about 100 students is tailored for the motivated student and allowed him to quickly get involved with graduate level work. He also has a M.S. in mathematics from UCSB, and a Ph.D. in mathematics from the University of California Berkeley. While at Berkeley in 1991 he informed his advisor that he was interested in summer work. "I had the good fortune to have someone from Intel at Santa Clare call my advisor looking for someone for the summer," says Jeff. "I continued part time while working on my thesis, then started full-time upon graduation in 1993. I moved to Oregon in 1995."
Asked about his decision to go into industry, Jeff replies that he likes the applied nature of his work. "When I solve a problem it has an effect: people who use our (my) products will have more processing power available for other uses due to the optimizations I devised and implemented. The pay is pretty good too."
Among the courses he finds valuable are numerical analysis, linear algebra, statistics and probability, differential equations and dynamical systems. His advice to students interested in industry is to maintain broad interests so as to be flexible, to become very good at a few things, to learn to write and code, and to explore summer and part-time work related to their interests.