AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1442815
Accepted
Usr1
Usr1
Asked: 2019-05-28 22:13:36 +0800 CST2019-05-28 22:13:36 +0800 CST 2019-05-28 22:13:36 +0800 CST

Como a CPU/DMA acessa o disco rígido?

  • 772

Considerando x86 CPU / LINUX

Eu quero entender como cpu ou dma acessam o disco rígido? O disco rígido precisa ser acessado por meio de endereços de porta IO ou mapeado na memória (MMIO)?

hard-drive cpu-architecture
  • 1 1 respostas
  • 2103 Views

1 respostas

  • Voted
  1. Best Answer
    Peter Cordes
    2019-05-28T23:41:00+08:002019-05-28T23:41:00+08:00

    Os dados no disco rígido não fazem parte do espaço de endereço físico. 1 Os dados não são mapeados na memória.

    O controlador SATA (por exemplo) possui registradores de E/S que a CPU precisa gravar, para programá-la para fazer uma transferência DMA de nsetores de um determinado deslocamento de disco para um determinado endereço de memória física.

    Alguns ou todos esses registradores de E/S podem ser acessados ​​via MMIO (cargas normais e armazenamentos em endereços especiais) em vez de in/ outporta IO. Mas ainda é só enviar os comandos desejados para o controlador SATA. (Para obter detalhes sobre isso, consulte https://wiki.osdev.org/AHCI .) AHCI é o tipo mais amplamente usado de kernel <-> interface de driver de hardware, mas existem outros (por exemplo, controladores RAID sofisticados que precisam de seus próprios drivers ).

    por exemplo, o controlador AHCI SATA no meu mobo, de acordo com lspci -v:

    00:17.0 SATA controller: Intel Corporation Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode] (rev 31) (prog-if 01 [AHCI 1.0])
            Subsystem: ASUSTeK Computer Inc. Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode]
            Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 135
            Memory at f7248000 (32-bit, non-prefetchable) [size=8K]
            Memory at f724c000 (32-bit, non-prefetchable) [size=256]
            I/O ports at f090 [size=8]
            I/O ports at f080 [size=4]
            I/O ports at f060 [size=32]
            Memory at f724b000 (32-bit, non-prefetchable) [size=2K]
            Capabilities: <access denied>
            Kernel driver in use: ahci
            Kernel modules: ahci
    

    Essas duas pequenas regiões de "memória" (2k e 8k) são quase certamente portas MMIO, mas também possuem algumas portas de E/S no espaço de endereço de E/S. O "non-prefetchable" é uma dica lá; se as leituras tiverem um efeito colateral, a pré-busca deve ser desativada.

    Observe o flags: bus master. Isso significa que ele pode DMA de/para a memória principal.

    Mas meu SSD NVMe tem apenas espaço MMIO, sem portas de E/S herdadas.

    03:00.0 Non-Volatile memory controller: Intel Corporation SSD 600P Series (rev 03) (prog-if 02 [NVM Express])
            Subsystem: Intel Corporation SSD 600P Series
            Flags: bus master, fast devsel, latency 0, IRQ 16, NUMA node 0
            Memory at f7000000 (64-bit, non-prefetchable) [size=16K]
            Capabilities: <access denied>
            Kernel driver in use: nvme
    

    Controladores de discos rígidos modernos não fazem a CPU copiar os dados 4 ou 8 bytes por vez com "E/S programada". Essa era uma opção com controladores IDE / ATA clássicos, mas apenas como um recurso caso algo ruim acontecesse (como travamentos ou corrupção de dados) em sua placa-mãe ou controlador PCI HD ao usar hdparmpara configurar os drivers Linux para usar transferências DMA em pré-SATA sistemas.

    Tecnicamente, o PIO ainda é uma opção para os controladores AHCI SATA, aparentemente. Mas nunca é o padrão; ao contrário dos velhos tempos, quando o hardware quebrado era uma possibilidade real, os sistemas operacionais modernos podem esperar com segurança que o DMA funcione corretamente.


    Nota de rodapé 1 : a menos que seu "disco rígido" seja na verdade um DIMM não volátil em um slot de memória, como Intel Optane DC PM ou uma DRAM com bateria). Obter dados armazenados recentemente enviados de caches de CPU de write-back para armazenamento mapeado em memória não volátil é um caso de uso para instruções como clflushoptou clwb.

    • 9

relate perguntas

  • Sistema que pode ler o disco rígido e gravar exclusivamente na RAM?

  • Devo substituir/atualizar meu disco rígido após 5 anos?

  • Devo particionar um SSD secundário (sem sistema operacional) usado para armazenamento? [fechado]

  • A execução do CrystalDiskMark causa BSOD no Windows 10

  • O fenômeno 'Write cliff' só acontece com discos SSD?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    Serviço do Windows 10 chamado AarSvc_70f961. O que é e como posso desativá-lo?

    • 2 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Marko Smith

    ssl.SSLCertVerificationError: falha na verificação do certificado [SSL: CERTIFICATE_VERIFY_FAILED]: não foi possível obter o certificado do emissor local (_ssl.c:1056)

    • 4 respostas
  • Marko Smith

    Como posso saber em qual unidade o Windows está instalado?

    • 6 respostas
  • Martin Hope
    Albin Como faço para ativar o WindowsXP agora que o suporte acabou? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch O Windows 10 exclui muitos arquivos minúsculos muito lentamente. Algo pode ser feito para agilizar? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Como Ctrl+C e Ctrl+V funcionam? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve