Um computador x86 usa os protocolos pci bus e pci para acessar a memória?

0

Depois de ver o lspci -k :

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller (rev 06)
    Subsystem: CLEVO/KAPOK Computer Device 5455
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
    Subsystem: CLEVO/KAPOK Computer Device 5455
    Kernel driver in use: i915

Você pode ver que o controlador de memória é mostrado como o dispositivo pci 00: 00 .0 sendo conectado ao barramento 00 : 00.0. Eu acho que um driver para este dispositivo não é mostrado porque, assim como o PCI em si, é um padrão tão grande que a maneira como o kernel o usa é embutida no código. (Nenhum driver necessário porque os métodos alternativos de gravação de E / S para os registros de dispositivos basicamente não existem.)

E lendo wikipedia :

In modern systems the performance difference between the CPU and main memory has grown so great that increasing amounts of high-speed memory is built directly into the CPU, known as a cache. In such systems, CPUs communicate using high-performance buses that operate at speeds much greater than memory, and communicate with memory using protocols similar to those used solely for peripherals in the past. These system buses are also used to communicate with most (or all) other peripherals, through adaptors, which in turn talk to other peripherals and controllers. Such systems are architecturally more similar to multicomputers, communicating over a bus rather than a network. In these cases, expansion buses are entirely separate and no longer share any architecture with their host CPU (and may in fact support many different CPUs, as is the case with PCI). What would have formerly been a system bus is now often known as a front-side bus.

Eu não gosto de usar o conceito southbridge / northbridge para descrever E / S porque é mais um ponto de vista físico e de hardware. Eu vejo E / S como barramentos, sendo conectado a dispositivos. Quais podem ser controladores que formam pontes para outros barramentos.

Em um sistema de computador moderno, o barramento que conecta a CPU a todo o resto agora é chamado de barramento frontal. AE / S da CPU para o mundo agora funciona através de uma conexão de barramento frontal em vez do antigo barramento de sistema. (que consistia no endereço, dados e barramento de controle. (que se acostuma a explicar a memória, o conceito de cpu))

Tudoissoépraticamentenadaoficial,porqueeusótenhowikipediaemeucomputadorparaaprender,entãoeugostariadeperguntaraalgunsespecialistas.

Tudoissoestácorreto?Issoéverdade?Porque:

IssosignificaqueamemóriaprincipalestárealmenteconectadaemapeadacomoE/Sounão?OcachedaCPUéamemóriarealqueusaesseconceitofácildosystembus(endereçodecontrolededadosdeendereço).Equandofalamossobreaformamaissimplesdeabordarfisicamenteoquequeremosdizer?(0x0FFF,010FFh)Localizaçõesdememória,éclaro.Masessenãoéocaso,desdepelomenos os anos 90 quando o conceito de barramento frontal foi introduzido.

    
por Junaga 28.10.2016 / 12:54

2 respostas

1

As modernas CPUs da Intel usam tecnologia de interconexão interna mais sofisticada chamada "Coherent Fabric", em várias encarnações. Os relatórios de ferramentas de software são simplesmente enganosos porque a arquitetura lógica dos espaços de configuração e alocação de recursos para dispositivos periféricos ainda permanece no formato PCI clássico, por conveniência e compatibilidade de software PNP. Assim, os protocolos lógicos permanecem os mesmos, mas fisicamente os dados são movidos muito, muito mais rápido.

    
por 31.10.2016 / 17:33
2

A maior parte da sua pergunta contém conceitos que são

  • Desatualizado (a Intel vem lançando plataformas e CPUs onde essas coisas não são verdadeiras desde pelo menos 2011)
  • Incorreto (o acesso à memória principal não é uma forma de E / S de uso geral e não usa o barramento frontal ou qualquer outro tipo de barramento de E / S de uso geral; ele sempre usa um barramento de memória).

Mesmo essa imagem bastante desatualizada mostra a memória usando um barramento de memória separado e dedicado separado do PCI / FSB:

ParaterumanoçãodecomoasmodernasplataformasdaIntelfuncionam,vocêdeveleroseguinte:

Observe que, a partir da introdução do Platform Controller Hub, não há mais distinção entre o northbridge e southbridge; eles estão integrados em um único chip (que, em sistemas de baixa potência, é ainda mais integrado ao pacote da CPU!)

A saída lspci está enganando e é um artefato do modo como o kernel do Linux é projetado em software . Você não está realmente fazendo acessos de memória via PCI. Em geral, é uma má idéia confiar na arquitetura de um sistema operacional para informar seu conhecimento do hardware do sistema, porque os subsistemas e abstrações nos sistemas operacionais são frequentemente redirecionados para casos de uso "semelhantes", mesmo que o hardware subjacente faça coisas de uma maneira completamente diferente.

Mais uma prova de que mesmo a arquitetura moderna baseada em PCH não acessa a memória principal pelo barramento de E / S:

Aindanãotenhocertezaseessaéumaboapergunta,porquevocêestábasicamentefazendoummontedesuposiçõesfalsaseconfiandoeminformaçõesmuitoantigasparafazerinferênciasquesãoparcialouprincipalmentefalsas.Portanto,aúnicarespostarealquefazsentidoaquié" Não ".

    
por 28.10.2016 / 14:57