Aumentar a instrução por ciclo ou aumentar a contagem de ciclos é uma opção válida de projeto para fabricantes de processadores. Entendo teoria, mas seria muito mais claro se eu tivesse algum exemplo da vida real.
Então, alguém pode me dar um exemplo que possa beneficiar ambas as opções de design? Como qual aplicativo / tipo de aplicativo / processo se beneficia de uma maior contagem de IPC e qual se beneficia de uma maior contagem de ciclos.
cpu
process
computer-architecture
Quazi Irfan
fonte
fonte
clock frequency/speed/rate
usandocycle count
.Respostas:
O Arquiteto de Computadores
É preciso muito mais esforço de engenharia para aumentar o IPC do que simplesmente aumentar a frequência do relógio. Por exemplo, pipeline, caches, múltiplos núcleos - totalmente introduzidos para aumentar o IPC - ficam muito complexos e exigem muitos transistores.
Embora a frequência máxima do relógio seja restringida pelo comprimento do caminho crítico de um determinado projeto, se você tiver sorte, poderá aumentar a frequência do relógio sem nenhuma refatoração. E mesmo que você precise reduzir os comprimentos do caminho, as alterações não são tão profundas quanto as exigidas pelas técnicas mencionadas acima.
Com os processadores atuais, no entanto, as frequências do relógio já são levadas aos limites econômicos. Aqui, os ganhos de velocidade decorrem apenas do aumento do IPC.
O Programador
Do ponto de vista do programador, ainda é um problema, pois ele precisa ajustar seu estilo de programação aos novos sistemas que os arquitetos de computador criam. Por exemplo, a programação simultânea se tornará cada vez mais inevitável, a fim de aproveitar os altos valores do IPC.
fonte
Na verdade, projetei alguns processadores (há muitos anos) e tenho um pouco de experiência nas compensações.
Para aumentar as instuções por ciclo (ou, mais provavelmente, reduzir os ciclos por instrução) você geralmente precisa "jogar o hardware" no problema - adicionar mais portas, trincos e multiplexadores. Além de um certo ponto (que foi aprovado cerca de uma década atrás), você deve "pipeline" e estar trabalhando em várias instruções ao mesmo tempo. Esse aumento na complexidade não apenas aumenta os custos básicos (como o custo de um chip está relacionado à área que ocupa), mas também aumenta a probabilidade de um bug passar pela revisão inicial do projeto e resultar em um chip ruim que deve ser "respun" - um grande custo e cronograma atingido. Além disso, o aumento da complexidade aumenta as cargas, de modo que, na ausência de ainda mais hardware, a duração de um ciclo realmente aumenta. Você pode encontrar a situação em que a adição de hardware diminui a velocidade. (De fato, vi isso acontecer em um caso.)
Além disso, o "pipelining" pode encontrar condições em que o pipeline está "quebrado" devido a ramificações frequentes (e imprevistas) e outros problemas desse tipo, fazendo com que o processador fique lento para rastrear. Portanto, há um limite para quanto disso pode ser feito produtivamente.
Para acelerar os ciclos individuais, é necessário fazer uma de três coisas:
Portanto, são muitas trocas e um pouco de sapateado através de um campo minado.
fonte