In computer hardware development, software issues are often neglected," according to James (Mac) Baker, who joined the department this past summer. "This can lead to unnecessary problems for the software people, and in some cases, it can seriously affect the performance of the overall system," he explained.
Baker described a typical scenario where hardware developers implement new features, but leave out other features "that are needed even more. Then the software people have to work around that loss and end up ruining any benefit of the new features."
"There is not enough communication between the two groups," he commented.
With industrial and academic experience in both hardware and software, Baker is working to bridge the two communities in his teaching and his research.
One of his efforts involves analyzing computer architecture from the system software viewpoint and developing hardware features specifically to improve programmability. "There are many design decisions that need to consider final software functionality."
One area is the push to increase the number of transistors on a chip. "Right now, we can put millions of transistors on a chip and in the next several years, we'll be talking about a billion. Why? We're trying to make more powerful processors and keep them running fast."
However, as the transistors get smaller and faster, it takes longer for signals to get from one end of the chip to the other, relative to the speed of the transistors. "The speed of the chip used to be limited by the rate the transistors switched on and off; now we're seeing the length of the on-chip interconnect wires becoming more of a factor," he said.
One solution is to use several processors in parallel on a chip. Each one would have fewer transistors and shorter interconnect wires, and thus could run faster. "The difficulty is programming the parallel processors," he said. "You can do it, but it's not easy."
"Most of the people pursuing parallel processor architectures are hardware experts," he added. "I'm investigating the effect on software and what changes can be made that will make programming easier."
While earning his Ph.D. at Georgia Tech, Baker worked on a similar problem. "We were developing a fine-grain message-passing parallel computer. My role involved the run-time operating system. I was looking at adding hardware features that would improve the software and make it easier to program."
Before returning to graduate school for a Ph.D., Baker served as a project engineer for Data Measurement Corporation of Gaithersburg, Md., where he participated in the development and implementation of measurement and control equipment for the steel and plastics industries. "As a project engineer, I was involved in a bit of everything, particularly software and overall system design," he said. He had studied computer science and electrical engineering as an undergraduate and earned an M.S. in electrical engineering at Tech. His educational background had prepared him well for the position. "In fact, my job was very much like the microprocessor system design class (4535) that I took at Tech."
This year, Baker is teaching the very same course, which is
now required of all electrical and computer engineering students.
"I'm trying to get my students to understand that hardware
people need to focus more on software...I put a lot of emphasis
on good programming practices."