SIM , alguns iguais, mas não exatamente iguais.
De acordo com o manuel para o processador :-)
link
Há uma pré-busca de hardware específica, e um programador pode informá-la para pré-busca, além de haver maneiras de trabalhar no tamanho do bloco de dados que um programador consciente poderia obter vantagens. Além disso, os mesmos métodos de hardware ou software feitos levemente de forma incorreta podem fazer com que a pré-busca seja lançada várias vezes, além de que coisas como essa variam em diferentes processadores.
Movendo os dados para os níveis mais altos, assumindo que serão necessários (como a leitura antecipada) e os dados que estão lá porque estavam dentro do tamanho do bloco que se move para esses níveis (ser seqüencial pode ajudar). O processador, sabendo que conjunto de instruções está lá, ou a lista de coisas que vai fazer, prepara os dados.
2.1.5.4 Data Prefetching Data can be speculatively loaded to the L1 DCache using software prefetching, hard- ware prefetching, or any combination of the two. . . .
-
Streamer: This prefetcher monitors read requests from the L1 cache for ascending and descending sequences of addresses. Monitored read requests include L1 DCache requests initiated by load and store operations and by the hardware prefetchers, and L1 ICache requests for code fetch. When a forward or backward stream of requests is detected, the anticipated cache lines are prefetched. Prefetched cache lines must be in the same 4K page. . . .
-
Wide Dynamic Execution
Smart Memory Access - prefetches data
Branch Prediction Unit
Instruction Fetch Unit
Instruction PreDecode
A lista continua com muitos recursos que estão pensando no futuro.
Comece na página 60 do documento vinculado.
link Mais PDFs estão vinculados ao Stack Overflow, e tenho certeza muito mais informações lá sobre isso.
Os dados sobre isso e a técnica são longos para postar aqui, e todo o "como isso funciona na realidade" dos programadores seria muito tempo também. Não só isso, eu mal compreendo isso. Depois de ler isso (e a informação do programador) não é de admirar que uma peça de software faça quase a mesma coisa, seja 50 vezes mais rápida que outra, as coisas poderiam ser meticulosamente testadas e testadas, para ter a otimização final, ou poderiam saudades de algumas coisas e ser normal.
& NÃO , ram é acesso totalmente aleatório, há apenas quantias mínimas de latência, é "Ram" que um disco rígido usa para fazer ações de leitura antecipada e libera transferências em muitas vezes mais rápido do que em pode ser lido a partir dos pratos. A sequencialidade é extremamente importante nos discos rígidos porque o movimento da cabeça leva tempo e não tira dados do disco. Depois que a cabeça chega ao local, ela tem que esperar até que os dados apareçam na rotação. Com o disco rígido lido antecipadamente, ele pode extrair dados na mesma rotação, economizando muitos milissegundos de tempo.
Pode ser um grande esforço na imaginação :-) presumir que há algo similar no 2.