Perguntas marcadas com 'predição de ramo'

Em uma arquitetura de computador, o preditor de ramificação é um circuito digital que tenta adivinhar qual ramificação (por exemplo, a estrutura if-then-else) irá antes que seja conhecida com certeza. O objetivo da previsão de filial é melhorar o fluxo no pipeline de instruções. Os preditores do setor desempenham um papel crucial na obtenção de alto desempenho em muitas arquiteturas modernas de microprocessadores baseadas em microprocessadores, como o x86.
26
respostas

Por que é mais rápido processar uma matriz classificada do que uma matriz não classificada?

Aqui está uma parte do código C ++ que parece muito peculiar. Por algum motivo estranho, classificar os dados milagrosamente torna o código quase seis vezes mais rápido. #include <algorithm> #include <ctime> #include <iostream> int main () {// Ge ...
Defina em 27 de junho '12 às 16:51
5
respostas

Por que (a * b! = 0) é mais rápido que (a! = 0 b! = 0) em Java?

Eu escrevo algum código em Java, onde em algum ponto o fluxo do programa é determinado pelo fato de as duas variáveis ​​int "a" e "b" serem diferentes de zero (note: a e b nunca são negativas e nunca devem estar dentro do inteiro números de excesso ...
set 21 fev '16 às 4:51
10
respostas

Qual é o efeito da ordenação, se ... else, se as instruções estiverem em probabilidade?

Em particular, se eu tiver uma série de if ... else if, e de alguma forma eu souber de antemão a probabilidade relativa que cada operador irá avaliar como verdadeiro, quanto a diferença no tempo de execução irá classificá-los em ordem de probabilidade? ...
set de 19 de outubro. '17 às 18:17
7
respostas

Existe uma dica de compilador para o gcc fazer predição de ramificação sempre de uma certa maneira?

Para a arquitetura Intel, existe uma maneira de instruir o compilador GCC a gerar código que sempre force a previsão de ramificação de uma determinada maneira no meu código? Este hardware suporta a Intel? E quanto a outros compiladores ou ap ...
set em 08 de maio '15 às 21:54
5
respostas

Quando os threads devem ser preferidos em relação aos loops tradicionais para melhor desempenho? Os encadeamentos aproveitam a previsão de ramificação?

Acabei de ler sobre o Branch-Prediction e queria experimentar como ele funciona com os threads do Java 8. No entanto, o desempenho com o Streams é sempre pior que os loops tradicionais. int totalSize = 32768; int filterValue = 1280; int [] array = novo em ...
fixado em 22 de dezembro. '16 às 11:26
5
respostas

Dicas portáteis para prever o setor

Existe alguma maneira portátil de prever previsão de ramos? Considere o seguinte exemplo: if (unlikely_condition) {/ * ..A .. * /} else {/ * ..B .. * /} Não é isso: if (! Unlikely_condition) {/ * ..B .. * /} mais ...
set 13 de setembro '10 às 20:35
8
respostas

Programação com filiais

Eu li que uma previsão errada do setor pode ser um gargalo quente para um aplicativo. Como eu vejo, muitas vezes as pessoas mostram um código assembler que descobre esse problema e afirma que os programadores geralmente podem prever onde o branch está ...
perguntou 15 de setembro '15 às 11:48
2
respostas

A fusão interna sem filiais é mais lenta do que a fusão interna com um branch

Recentemente, fiz uma pergunta em uma revisão de código para visualizar um algoritmo de classificação chamado QuickMergeSort. Não entrarei em detalhes, mas em algum momento o algoritmo realiza uma mesclagem interna: em vez de usar memória adicional para armazenar ...
fixado em 13 de dezembro. '16 às 22:53
5
respostas

Por que esse recurso C ++ produz tantas previsões incorretas do setor?

Seja A um array contendo um número ímpar de zeros e uns. Se n é o tamanho de A, então A é projetado de tal forma que os primeiros elementos ceil (n / 2) sejam 0, e os elementos restantes sejam 1. Então, se n = 9, A terá a seguinte aparência: 0,0,0,0,0, 1,1,1,1 O objetivo é ...
perguntou 15 de setembro '16 às 17:44
2
respostas

O GCC recebe um código sub-ótimo para prever uma ramificação estática?

De meu curso universitário, ouvi dizer que, por acordo, é melhor colocar uma condição mais provável em se em vez de em outro lugar, o que pode ajudar a prever um ramo estático. Por exemplo: if (check_collision (jogador, inimigo)) {// muito improvável que seja verdade ...
set 26 de janeiro '17 às 21:49
4
respostas

Previsão do setor e divisão zero

Eu escrevi código que se parecia com isto: if (denominator == 0) {return false; } int resultado = valor / denominador; ... quando eu estava pensando sobre o comportamento de ramificação na CPU. levitrasi.net.site/questions/1 / ... Esta resposta afirma que a CPU tentará ...
set 03 ago '15 às 11:22
5
respostas

Quão comum é a previsão de ramificação nos processadores atuais?

Devido ao enorme impacto no desempenho, nunca me pergunto se minha área de trabalho atual tem um processador de previsão de ramificação. Claro Mas e as várias ofertas da ARM? Os telefones iPhone ou Android têm uma previsão sobre ...
set em 23 de novembro 11 às 2:31
3
respostas

É "==" em uma matriz classificada não mais rápido que uma matriz não classificada?

Nota: Eu acho que a suposta questão duplicada é principalmente relacionada à comparação "<" e ">", mas não à comparação "==" e, portanto, não responde à minha pergunta sobre a eficácia do operador "==". Por muito tempo, acreditei que "processar" ...
set em 18 de agosto '15 às 6:51
4
respostas

X86-64 Build Performance Optimization - Nivelamento e Ramificação de Previsão

No momento, estou codificando versões altamente otimizadas de algumas funções de biblioteca C99 padrão, como strlen (), memset (), etc., usando as instruções x86-64 build with SSE-2. Até agora eu consegui alcançar excelentes resultados ...
set 08 ago. '13 às 0:18