Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Increasing either instruction per cycle or increase cycle count both are valid design choice for processor manufactures. I understand theory, but it would be much clearer if I had some real life example.

So, can anyone give me some example that can benefit both of this design choice? Like which application / type of application/process takes advantage of higher IPC count and which takes advantage of higher cycle count.

share|improve this question
By "cycle count", do you mean CPU clock frequency? –  sblair Dec 4 '11 at 19:22
@sblair Yes. I meant clock frequency/speed/rate using cycle count. –  iamcreasy Dec 4 '11 at 19:28

2 Answers 2

up vote 7 down vote accepted

The Computer Architect

It takes much more engineering effort to increase IPC, than simply increasing the clock frequency. E.g. pipelineing, caches, multiple cores--altogether introduced to increase IPC--get very complex and require many transistors.

Although the maximum clock frequency is restricted by the length of the critical path of a given design, if you're lucky, you can increase the clock frequency without any refactoring. And even if you have to reduce path lengths, the changes are not as profound as those the techniques mentioned above require.

With current processors, however, clock frequencies are already pushed to the economical limits. Here, speed gains solely stem from IPC increase.

The Programmer

From the programmer's point of view, it's in so far an issue, as he has to adjust his programming style to the new systems computer architects create. E.g. concurrent programming will become more and more inevitable in order to take advantage of the high IPC values.

share|improve this answer
"if you're lucky, you can increase the clock frequency without any structural changes" Does this means overclocking? –  iamcreasy Dec 4 '11 at 19:10
@iamcreasy not necessarily over -clocking, but, yes, clocking higher. (As it was meant to reflect the architect's point of view--and not so much the customer's--the using-it-out-of-spec connotation of the word overclocking doesn't quite fit here) –  artistoex Dec 4 '11 at 19:17
@iamcreasy I changed the passage about increasing the clock frequency a bit so as to improve clarity. –  artistoex Dec 4 '11 at 23:05
Is multiple core and concurrent programming is the same context? –  iamcreasy Dec 8 '11 at 13:59
@iamcreasy Yes! For the programmer, cores are like processors. If you have 10 cores and you don't program concurrently, 9 cores will be idle. –  artistoex Dec 8 '11 at 21:27

I've actually designed a couple of processors (many years ago) and have a little bit of experience in the trade-offs.

To increase the instuctions per cycle (or, more likely, reduce the cycles per instruction) you generally have to "throw hardware" at the problem -- add more gates and latches and multiplexers. Beyond a certain point (which was passed about a decade ago) you must "pipeline" and be working on several instructions at once. This increase in complexity not only drives up basic costs (since the cost of a chip is related to the area it occupies), it also increases the likelihood that a bug will make it through the initial design review and result in a bad chip that must be "respun" -- a major cost and schedule hit. In addition, the increase in complexity increases loads such that, absent even more hardware, the length of a cycle actually increases. You could possibly encounter the situation where adding hardware slowed things down. (In fact, I saw this happen in one case.)

Additionally, "pipelining" can encounter conditions where the pipeline is "broken" because of frequent (and unanticipated) branches and other such problems, causing the processor to slow to a crawl. So there's a limit to how much of this can be done productively.

To speed up individual cycles you need to do one of three things:

  1. Use a faster technology (a "no-brainer" if the technology is available, but new, faster technologies are not showing up as frequently as they used to)
  2. Somehow remove logic from the "critical path" (possibly by deleting complex instruction from the instruction set or adding other limitations at the software level).
  3. Reduce the propagation delay through the slowest data paths (which usually means "throwing hardware" at the problem again -- and again with the chance that this would backfire and slow things down).

So it's a lot of trade-offs, and a bit of a tap dance through a minefield.

share|improve this answer
I know this is not meant to be a forum. Anyway, I like your computer-architecture answers, and I'm just curious: how did you get the opportunity to work in that field? –  artistoex Dec 4 '11 at 23:46
Dumb luck mostly. Like many in the industry it was a case of (almost) "right place at the right time". (I say "almost" because in neither case did the processor design go very far, for reasons unrelated to the design.) It is, unfortunately, getting harder and harder to "break into" such areas, since you have to be a specialist before you can get hired, vs people hiring you for your "potential". But, today, if you want any chance to get into processor design you should take EE courses oriented towards integrated circuit design. –  Daniel R Hicks Dec 4 '11 at 23:52
Thanks so much for replying. What are your thoughts, will EE courses make up for having the wrong (CS) degree? Is CS the wrong degree at all? –  artistoex Dec 5 '11 at 0:21
Hard to say. To get into processor design these days you'd need to get hired by Intel or one of the other big names, and you'd have to be a "stand-out" graduate to move directly into the processor design team. And have some good luck. With a CS degree you might be able to work your way over from an architecture group, but it would be an uphill battle (even after you somehow got into that architecture group). I worked with one guy who helped invent core memory, and several others that invented the industry-standard IC design software, but didn't quite get me into the inner circle. –  Daniel R Hicks Dec 5 '11 at 3:48
@artistoex: Don't forget that there are many (not just a few) other processors in use outside the PC world: AVR, MIPS, STMicro, TI MSP, and all the ARM variants to mention a few. Although some are succumbing to the onslaught of ARM (e.g. Axis has ceased production of their CRIS Etrax). You might find the history of the Atmel AVR to be interesting: it was originally designed by two students. –  sawdust Dec 5 '11 at 7:34

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.