Multi-core

Software e Hardware para linha x86

Moderadores: andre_luis, 51

Multi-core

Mensagempor mastk » 23 Dez 2008 12:03

Sabe pessoal, vendo esses processadores multi-core, eu simplesmente acredito no ganho de peformace tanto quanto acredito em gnomos/fadas/espers.

Que tipo do basico da arquitetura x86, ela nasceu para multi-processamento segmentados, o que era uma ideia boa a não ser pela limitação do tamanho do segmento. Porem acredito que esse conceito não é mais utilizado.

Na epoca do 486DX2, fiquei com receio de duas ALU, já que se tem paralelismo, como ficam instruções sequencias? o flag de resultado da ALU_A ainda esta sendo processado e a ALU_B já precissa dele.

Na epoca do pentium 4, foi onde um absurdo ficou claro, uma fileira de 14 (acho) ALUs, que para se obter a performa esperada o era nescessario um mecanismo de prognostica de ramos que geralmente falhava e deixava a CPU mais lenta que um pentium 3.

Hoje se fala de 4, 6, 8 cores em uma CPU, de cara já fica bonito para o maketing, mas em MIPS reais como fica? Se precissa de codigo otimizado para usufluir da suposta potencia, é inutil já que geralmente não é.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Re: Multi-core

Mensagempor Rodrigo_P_A » 23 Dez 2008 12:39

Uma coisa eu sei:

vc tem que fazer seu software para usar os núcleos disponíveis, se eu não me engano o VS2010 da MS, vai ter este recurso, você poderá processamento paralelo usando duas ou mais CPUs disponíveis.

acho eu que atualmente os softwares não aproveitam o multicore, mas o S.O. deve tirar algum proveito, pois eu percebo diferença quando uso um Windows com um PC comum e o mesmo Windows em uma máquina multicore.

e isso deve acontecer com o linux, com certeza, pois eu li em algum lugar que o linux suportava até 64 processadores em uma unica placa, a lógica deve ser a mesma para multicores...

Os softwares que vão tirar mais recursos desse paralelismo fornecido por sistemas multicore, são os aplicativos gráficos, jogos, etc...

eu não tenho nenhuma aplicação pra isso hehehe, mas o S.O. rodando mais rápido pra mim já é lucro
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2236
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor enigmabox » 23 Dez 2008 13:00

Uma coisa que li, num site sobre MAC, quando usavam processadores duplos, antes da Intel, a Apple teve problema com seu sistema operacional. Pois tinha vezes que um dos nucleos ficava ocioso. Acho que o kernel, não distribuia bem as tarefas.
Pode se deixar o S.O. deixar um processador encarregado do I/O e o outro para processamento generico, ou tb dividir as tarefas entre ambos( mais eficiente).
O que deve funcionar é o PS3 que tem varios nucleos dentro de uma mesma pastilha se pifar um nucleo, entre um de reserva.....
Outro microcontrolador é o Parallax Propeller com varios nucleos simples, trabalhando em paralello, onde cada um realiza uma tarefa.
Como já foi dito, o segredo tá no software. Se o S.O for mal feito tu não aproveita todo o potencial do hardware.
Outro item que é fundamental, é a velocidade da CPU com os perifericos. Não adianta ter uma cpu cheia dos nucleos, se a velocidade dela com a memoria, placa de video e outros perifericos é lenta.
Já vi varios micros vendidos(baixo custo) que usam uma motherboard fuleira, com uma cpu rapida, no final a performance do sistema cai.
enigmabox
 

Mensagempor mastk » 23 Dez 2008 13:11

Outra questão, as memorias dinamicas atuais, conseguem suprir a demanda de barramento desses caras?

O PS3 é um caso a parte, video-game é um sistema embacardo, então desde do nascimento é pensado em como utilizar os recursoso.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor Rodrigo_P_A » 23 Dez 2008 13:20

enigmabox escreveu:Uma coisa que li......
Já vi varios micros vendidos(baixo custo) que usam uma motherboard fuleira, com uma cpu rapida, no final a performance do sistema cai.


isso eu comprovei. eu tenho um Notebook que comprei faz um tempão, um Pentium M TOshiba 1.73GHZ, placa com tudo Intel, e 1GB RAM, rodo o Windows Vista muito bem nele, e estou satisfeito, ele começa à ficar lento qdo eu começo a rodar máquinas virtuais, e outros programas gráficos ao mesmo tempo hehehe...

o da minha esposa é um Positivo 1.73GHZ 1GB ram, e é umas 3 x mais lento que o meu, olha só: o processador , a ram e o sistema operacional são os mesmos do meu note, mas o dela é muito mais lento, os chipsets são se outro fabricante, nem sei qual é hehehe,

pra mim está mais do que provado, eu só compro PC, se tudo for intel, e num adianta falarem mal heheh


Em relação ào paralelismo, é isso que vc disse, se o software for mal feito, num adianta vc ter 300 processadores, vai dar merd...

então para que nós usuários possamos usufruir melhor dos multiprocessadores e do paralelismo, os S.O. tem que ser melhorados, suportar vários processadores, e saber escalonar de forma correta os processamentos e uso do HW.
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2236
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor enigmabox » 23 Dez 2008 13:32

RodrigoP_A

Em casa tb tinha feito um teste parecido. Um velho Athlon 1.2 com motherboard Asus, dava um coro num Celeron 2.4Ghz, com placa de terceira linha.
No caso de notebooks, meu irmão tem um Positivo Intel dual core, onde testou dois sistemas, o windows vista basic(original de fabrica) e o windows ultimate. Nesta mesma maquina o windows ultimate foi bem mais rapido, acho que foi devido a utilizar os dois nucleos.
No caso das memorias, até hoje não gosto de memorias dinamicas, pra mim é economia porca. Tem que ser estaticas de de alta velocidade, ai o custo sobe....
Esta tua logica de usar todo o hardware de um mesmo fabricante é correta, já tive alguns micros tudo intel, que eram bem mais eficientes do que usar motherboard fuleiras.
Outra coisa, quando a Intel, no desespero lançou o Dual Core, botou a cpu no mercado com defeito porque os dois nucleos não comunicavam direito entre si, assim a Intel lançou o Core 2 Duo como correção alegando 25% mais de eficiencia....será que não era correção!! hehe
Quero ver como vai ser o I7 da intel, vamos ver se vai pintar o sete, ou vai ser mais uma cpu pra enganar o consumidor.
enigmabox
 

Mensagempor Rodrigo_P_A » 23 Dez 2008 14:22

Pois é cara, mas vamos fazer o que, eu ainda to sonhando com um notebook quadcore heheh, mas eu num tenho nem dinheiro nem coragem de comprar um agora, se o Note quadcore for igual ao pc quadcore, eu to feito hehe, já é o suficiente pra mim, eu num tenho paciencia de ficar esperando os programas carregarem
Avatar do usuário
Rodrigo_P_A
Dword
 
Mensagens: 2236
Registrado em: 12 Out 2006 18:27
Localização: Osasco - S.P - Brasil

Mensagempor msamsoniuk » 23 Dez 2008 14:48

na verdade existem varios conceitos que foram empregados nos x86 modernos:

- pipelines: o 486 foi o primeiro x86 a usar pipelines de forma agressiva, com o objetivo de atingir 1 instrucao por clock. os pipelines permitiam paralelizar as operacoes como em uma linha de montagem, de modo que ateh 5 instrucoes podiam estar nas entranhas do processador, nos estagios de fetch, decode 1, decode 2, execute e write back... na pratica, porem, ele soh consegue uma instrucao a cada 2 clocks e ele possui uma unica ALU.

- pipeline com execucao superescalar: foi identificado que o 486 possuia um gargalo na saida do decode 1 para o decode 2. a solucao foi duplicar a pista no pentium, entao ele possui um estagio de fetch e decode 1, mas a partir daih a pista dobra de tamanho e existem dois pipelines independentes com seus respectivos decode 2, execute e write back. isso significa que ele possui duas ALUs.

- hyperthreading: o topo do processamento superescalar eh conseguir rodar dois pipelines praticamente sem interlock algum. neste estagio, vc esta com quase dois processadores completos... entao pq nao marketar isso como tal ? com o hyperthreading vc chuta o pau da barraca e roda coisas diferentes em cada pipeline. mas espere aih! assim jogamos fora as vantagens do processamento superescalar! sim sim, mas evitamos interlock e podemos adicionar um ganho de 30% na performance nos folhetos de propaganda! wow! :)

- multicore: a tecnologia eh uma curva, mas ela nao cresce infinitamente: ela vai ateh um ponto e volta. quanta performance vc extrai processamento superescalar ? existe um limite... a partir daih, nao tem solucao, ir adiante se traduz em perda de performance! e aih eh o ponto onde vc comeca a empilhar processadores. desde a decada de 70 eh assim com supercomputadores, entao pq seria diferente agora ?

efetivamente, o que temos hoje ? cores superescalares capazes de sustentar 2 instrucoes por clock e varios cores por processador. isso eh eficiente pq existe uma hierarquia de cache, onde cada core possui uma cache L1, embaixo de uma cache L2 e outras maiores. e funciona! ao menos a experiencia adquirida nos supercomputadores da decada de 80 mostra que a performance irah escalar linearmente ateh 16 cores...

e adiante ? sera um beco sem saida ? talvez, mas solucoes jah existem :)

em termos de eficiencia, indiscutivel: servidores unix aproveitam ateh a ultima gota de processamento, seja em um 486 monoprocessado, seja em uma silicon graphics com 512 processadores. isso ocorre pq multiprocessamento nao eh novidade.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor msamsoniuk » 23 Dez 2008 14:58

curiosamente eh o contrario: software que tira partido de multiprocessadores existe a 30 anos, mas software que tira partido de processamento vetorial eh raro... motivo pelo qual o powerpc tri-core do xbox supera de longe em performance o powerpc mono-core com unidades vetoriais do playstation-3... ao menos ateh quebrarem o paradigma de 30 anos fazendo software para multiprocessador. obviamente processamento vetorial eh superior! de fato, acho que eh a *unica* solucao para aquele beco sem saida que citei acima :)

mastk escreveu:Outra questão, as memorias dinamicas atuais, conseguem suprir a demanda de barramento desses caras?

O PS3 é um caso a parte, video-game é um sistema embacardo, então desde do nascimento é pensado em como utilizar os recursoso.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor mastk » 23 Dez 2008 16:13

Bem sam, me lembro claramente que tinham 2 ALUs.

Sobre seu post:

Pipeline superescalar dá certo. é claro.

hyperthreading precissa de codigo otimizado para o pipe, senão é inutil, não? tal qual pode ser multicore.

Mas ai que tá novamente, um unix para servidor é completamente diferente do resto da humanindade rodando win-xp/vista, creio que as atividades de um servidor podem ser bem dividadas e organizadas, tal qual são sequenciais.

Em teoria tudo pode ser eficiente, mas nos PC temos os legados a serem seguidos e compatibilidade.

Um exemplo foi o sega-saturno vs o playstation, o saturno era superior em todos os aspectos, porem, complexo de ser programado, resultado a marca PS tá ai com tudo e fica o ensinamento, uma CPU simples é melhor que varias complicadas.

Todo o caso, em um upgrade quero ganhos reais, 2 cores o dobro da potencia? sei não, se assim fosse, teriamos em um operação mono-core muitos ciclos de barramento livre...
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor Djalma Toledo Rodrigues » 23 Dez 2008 16:22

Eu estou aqui com Pentium lll 733 Mhz placa Intel ele é muito mais rápido que o Duol
Core + Vista da mulher e o XP da filha dela , ambos de cacetadas de GHertz.

Por isso estou retardando o máximo possível a 'desatualização' do meu PC
mas, vou ser obrigado a faze-lo, com pesar, já que muitos programas não o
aceitam mais.
.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor mastk » 23 Dez 2008 16:33

Apenas pelo a troca de tecnologia de memoria teria ganho efetivo de peformace, estou falando serio, sobre conceitos, se estão errados me corrija.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 23 Dez 2008 22:35

existem diferencas claro, mas os conceitos sao similares.

por exemplo, eu tenho aqui um core2 duo 2.2GHz com linux e fiz uma brincadeira muito simples: alternei rapidamente entre 4 desktops e congelei uma saida do top:

2770 root 15 0 59016 36m 5336 S 61 3.6 3:07.89 X
2910 root 15 0 200m 99m 18m S 18 9.8 3:55.34 navigator-bin
2845 root 15 0 43948 25m 13m S 12 2.5 0:16.72 kicker
2843 root 15 0 42012 25m 13m S 7 2.5 0:04.45 kdesktop
2860 root 15 0 120m 41m 24m S 4 4.1 2:06.93 amarokapp
2855 root 15 0 11236 6764 5040 S 2 0.7 2:33.88 artsd
2841 root 15 0 37340 20m 10m S 1 2.0 0:03.56 kwin
2847 root 15 0 2388 1076 736 S 1 0.1 0:00.13 ksysguardd
2880 root 15 0 94476 48m 22m S 1 4.8 0:11.70 kopete

eh possivel ver claramente um monte de aplicacoes enlouquecidas tentando entender pq as janelas aparecem e desaparecem rapidamente (o uso de cpu eh a coluna depois do "S")... mas em condicoes normais de uso:

2770 root 15 0 59132 36m 5336 S 1 3.6 3:10.47 X
2855 root 15 0 11236 6764 5040 S 1 0.7 2:35.60 artsd
2860 root 16 0 120m 41m 24m S 1 4.1 2:08.50 amarokapp

ninguem passa de 1%e isso de um total de 77 processos ativos. mas nao apenas ativos, como rodando o tempo todo e constantemente escalando p/ usar ambos os cores, soh que eles passam a maior parte do tempo dormindo... mas como eh uma maquina desktop, raramente as necessidades sobem ao ponto de processos comecarem a consumir todos os recursos da maquina.

loguei em um servidor com 84 processos rodando e nada... bom essa hora da noite tb... queria o que:

8928 root 15 0 7016 3328 1724 S 0.3 0.6 0:00.15 sendmail

e isso raro... vez em quando sobe a 0.algo um sendmail ou um named. loguei em outro server rodando 29 processos e supostamente devastada por uma massa de clientes conectados, mas nada. parece que a performance das maquinas atuais superou vastamente as necessidades dos servidores de rede hehehe :)

bom, e no windows ? em condicoes normais tem varios programas se degladiando, quando a isso eh tao espalhado o processamento quanto em um desktop unix. ninguem mais usa um unico programa ao mesmo tempo, entao com certeza o processamento se espalha entre os cores. e melhor de tudo, se o seu word travar e chumbar 100% da cpu, vc tem o outro core para digitar control+alt+del e chutar ele para fora hahaha :)

ah! no 486 quem era duplicado era o clock do core em relacao ao bus... o resto do core era identico ao 486 padrao, ou seja, uma ALU... quem tinha duas ALUs era o pentium, mas nao eram ALUs completas: dependendo da instrucao, soh rodava na ALU principal.

eh intel neh, ve se os caras iam perder uma chance de fazer algo mal feito ? :) mas daih comeca a misturar com aquele topico que onde estavamos comentando sobre processadores melhores e piores neh ;D
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor enigmabox » 24 Dez 2008 07:49

Por exemplo o filme Titanic, teve animações feitas com varios micros 486 em SMP rodando Linux e funcionou. Provando que a extrutura de um Unix/Linux é bem superior a um Windows. Queria ver fazer o mesmo com Windows na época.

Rodrigo_P_A
Geralmente os notebooks não são mais eficientes que o micros desktops. Porque tem que ser economicos no consumo de energia e não podem aquecer muito, devido a pouco espaço.
A Apple fez alguns notebooks com processador G5, que literalmente fritavam até se descolarem da pci. Porque foi feito? Tentaram botar toda eficiencia de um desktop em um notebook, mas não deu certo.
Acho que depois disto adotaram as cpus intel, que ao meu ver nem chegam perto de um G5 da Motorola/IBM/Apple.

Marcelo Sam,
Nesta cpu intel dual core que vc fez o teste, será que não tem como desabilitar o gerenciador de energia, como tem nas da AMD64? Para deixar as cpus em frequencia maxima?

bom, e no windows ? em condicoes normais tem varios programas se degladiando, quando a isso eh tao espalhado o processamento quanto em um desktop unix. ninguem mais usa um unico programa ao mesmo tempo, entao com certeza o processamento se espalha entre os cores. e melhor de tudo, se o seu word travar e chumbar 100% da cpu, vc tem o outro core para digitar control+alt+del e chutar ele para fora hahaha Smile

O problema se travar um core o segundo como vai destravar o primeiro? Dando um reset?hehe Ou será que temos duas linhas de reset no micro pro windows?
Uma boa ideia....Será que ninguem inventou um gabinete com dois botões de reset? Um para cada cpu? Isto deve ser usado especialmente para windows com dual core....hehe :D



Enquanto não melhorarem a velocidade de comunicação da cpu com outros perifericos, memoria, etc. Acho que não vai ter muita vantagem fazer um upgrade para um micro com cpu mais rapida. Podem até colocar uma cpu com 4 nucleos , mas se o meio de comunicação é o mesmo como de uma cpu, com o resto da motherboard, acho que não tem muita vantagem, o ganho em rendimento não é muito alto. O que manda é a velocidade do BUS e como a informação é colocado lá.
enigmabox
 

Mensagempor msamsoniuk » 24 Dez 2008 13:27

mas veja que isso nao tem relacao alguma com o sistema operacional.

se a aplicacao eh construia em uma thread unica, nao tem jeito, o unix nao vai fazer milagres. o que difere eh o fato dos desenvolvedores dividirem a aplicacao em multiplas threadas para rodar em paralelo, nada mais, nao existe nada tecnicamente inferior no windows a nao ser a cabeca dos proprios desenvolvedores!

bom, creio que nao estou usando gerenciador de energia nao, pq jah fiz medicoes e ele responde prontamente com 9000 mips de performance. de fato, eu estou rodando com 25% de overclock no processador! :D

sobre travar, quem trava eh a thread. o sistema operacional simplesmente escalona uma thread com um loop infinito, mas isso nao trava o processador, entao nao existe necessidade para um reset separado. se realmente um core congelar, creio que eh possivel tirar ele dali por uma NMI, entao nao tem muito galho nao... e soh para constar: o control+alt+del nao manda um reset fisico para a cpu! :)

sobre a migracao da apple, sem comentarios, foi completamente sem sentido. eu jah estudei a estrutura de chipsets de um PC e francamente nao entendo: existe um processador, um north bridge para controlar memoria e um south bridge para controlar perifericos. vc precisa de no minimo 3 componentes para produzir um PC e precisa interconectar todos eles atraves de barramentos proprietarios...

com o powerpc vc faz isso em uma solucao single-chip. poderia argumentar em relacao a performance, mas existem powerpcs com 8 cores de 1.5GHz e no mesmo componente vc encontra mais de meia duzia de conexoes pci-express, duas conexoes para ethernet de 10gbps e suporte a dois barramentos DDR3 paralelos... nada mal para uma solucao single-chip! :)

por outro lado, o argumento na epoca era de que os processadores intel eram melhores pq rodavam com clock maior... anos depois os macintoshes continuam sendo vendidos com clocks de 2.1GHz, sendo que na epoca a IBM estava prestes a apresentar os G5 de 2.7GHz.

assim vc conclui que nao tem fundamento tecnico!

falando realisticamente, a apple esta em uma situacao muito boa: eles podem fazer o rebuild completo do sistema pera qq processador em 48h. eh questao entao de quem vai pagar mais para ter a marca e, ateh onde sei, a intel fornece para a apple os processadores a 1/10 do custo real, como dizimo eterno para manter a apple ao seu lado.

sobre a performance em SMP: os estudos da SGI na decada de 80 e 90 mostram que o aproveitamento de forca bruta em uma maquina SMP ocorre linearmente ateh 16 cores. a partir daih elas passam tanto tempo disputando semaforos e bus que a eficiencia cai, mesmo tendo bandwidth disponivel. veja que grande parte da banda extra vem de caches L1, L2 e L3, bem como novos barramentos mais velozes: o pci-express 1x eh varias vezes mais veloz que o pci normal e as memorias DDR3 sao mais velozes que as antigas DDR2 e DDR1. bandwidth com certeza surge em proporcao ao crescimento do numero de cores!

mas para adiante de 16 cores a solucao eh processamento vetorial. outra solucao eh maquinas com processamento paralelo assimetrico. a SGI construiu maquinas com ateh 512 processadores, mas daih realmente a coisa complica: o hardware eh infinitamente mais complexo e vc precisa granular o processamento em mais e mais threads, porem como nao esta mais em um ambiente de memoria unificada de uma maquina SMP, tudo se torna mais complexo.

por isso eu diria que no momento que atingirmos o topo, o caminho eh processamento vetorial. as GPUs foram para esse caminho, estao muito a frente em performance e parecem meio longe ainda de atingir os limites conceituais para essa tecnologia.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Próximo

Voltar para Intel x86

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitantes

x