Instrução por ciclo vs aumento na contagem de ciclos

3

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.

Quazi Irfan
fonte
Por "contagem de ciclo", você quer dizer frequência do clock da CPU?
precisa saber é o seguinte
@sblair Sim. Eu quis dizer clock frequency/speed/rateusando cycle count.
Quazi Irfan 04/12/11

Respostas:

8

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.

artistoex
fonte
"se tiver sorte, você pode aumentar a frequência do relógio sem alterações estruturais" Isso significa fazer overclock ?
Quazi Irfan 04/12/11
@iamcreasy não necessariamente com overclock, mas sim, com clock mais alto. (Como era para refletir o ponto de vista do arquiteto - e não tanto o cliente - a conotação usando-fora das especificações da palavra overclocking não se encaixa aqui)
artistoex
@iamcreasy Mudei a passagem sobre aumentar um pouco a frequência do relógio para melhorar a clareza.
Artistoex
A programação múltipla principal e simultânea é o mesmo contexto?
Quazi Irfan
@iamcreasy Yes! Para o programador, os núcleos são como processadores. Se você tiver 10 núcleos e não programar simultaneamente, 9 núcleos ficarão ociosos.
Art Deco #
9

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:

  1. Use uma tecnologia mais rápida (um "acéfalo" se a tecnologia estiver disponível, mas tecnologias novas e mais rápidas não estão aparecendo com a frequência que costumavam)
  2. De alguma forma, remova a lógica do "caminho crítico" (possivelmente excluindo instruções complexas do conjunto de instruções ou adicionando outras limitações no nível do software).
  3. Reduza o atraso de propagação pelos caminhos de dados mais lentos (o que geralmente significa "jogar o hardware" no problema novamente - e novamente com a chance de que isso sair pela culatra e atrasar as coisas).

Portanto, são muitas trocas e um pouco de sapateado através de um campo minado.

Daniel R Hicks
fonte
Eu sei que isso não é para ser um fórum. Enfim, gosto das respostas da arquitetura do computador e estou curioso: como você teve a oportunidade de trabalhar nesse campo?
precisa saber é o seguinte
11
Muita sorte principalmente. Como muitos na indústria, foi um caso de (quase) "lugar certo na hora certa". (Digo "quase" porque em nenhum dos casos o design do processador foi muito longe, por razões não relacionadas ao design.) Infelizmente, está ficando cada vez mais difícil "invadir" essas áreas, pois é necessário ser um especialista. antes que você possa ser contratado, versus as pessoas que o contratam para o seu "potencial". Hoje, porém, se você quiser ter alguma chance de entrar no design do processador, faça cursos de EE orientados ao design de circuitos integrados.
Daniel R Hicks
Muito obrigado por responder. Quais são seus pensamentos: os cursos de EE compensarão o grau errado (CS)? CS é o grau errado?
Artisex
Difícil de dizer. Para entrar no design do processador hoje em dia, você precisa ser contratado pela Intel ou por um dos outros grandes nomes e precisa ser um graduado "destacado" para passar diretamente para a equipe de design do processador. E tenha boa sorte. Com um diploma em CS, você poderá trabalhar a partir de um grupo de arquitetura, mas seria uma batalha difícil (mesmo depois de você entrar nesse grupo de arquitetura). Eu trabalhei com um cara que ajudou a inventar a memória principal e vários outros que inventaram o software de design de IC padrão da indústria, mas não me levaram ao círculo íntimo.
Daniel R Hicks
11
@artistoex: Não esqueça que existem muitos (não apenas alguns) outros processadores em uso fora do mundo dos PCs: AVR, MIPS, STMicro, TI MSP e todas as variantes do ARM, para citar alguns. Embora alguns estejam sucumbindo ao ataque do ARM (por exemplo, a Axis interrompeu a produção do seu CRIS Etrax). Você pode achar interessante a história do Atmel AVR: foi originalmente projetada por dois estudantes.
sawdust