Componentes de hardware envolvidos em E / S

0

Começando com a CPU, ou com o chipset que o acompanha (ex, Intel PCH), quais são os vários componentes de hardware envolvidos na tradução de uma leitura / gravação para o disco e qual é o papel deles?

Especificamente, estou confuso sobre os papéis dos seguintes itens:

  1. Controlador do host
  2. Controlador de dispositivos
  3. Adaptador de barramento de host

Tanto quanto eu posso dizer:

  1. Controlador host: Circuito que existe na placa-mãe. Inclui interface de nível de registro para os drivers interagirem. Responsável pela tradução de solicitações de seus registros em ações: ler / escrever diretamente em dispositivos conectados. Por exemplo, USB. Também pode conter capacidade de DMA.
  2. Controlador do dispositivo: O mesmo que o controlador host, mas existe no dispositivo externo, como um controlador de disco em um HDD.

  3. Adaptador de barramento de host: converte um protocolo de barramento externo em um interno. Transparente ao software. Por exemplo, um driver que queira ler / gravar para se registrar em um disco rígido HDD externo conectado ao SATA ou ao Infiniband.

Como, então, um dispositivo como um teclado externo conectado via USB funciona? No nível SW, os drivers ainda parecem estar se comunicando com registros específicos; no entanto, existem 2 controladores em jogo.

    
por kay 30.04.2018 / 17:29

2 respostas

1

Controlador host , Adaptador de barramento host ou mesmo Adaptador host são apenas nomes diferentes para a mesma coisa (cf Wikipedia ): Uma peça de hardware que conecta o barramento entre o host (seu PC) e o dispositivo (seu disco rígido externo) ao barramento interno (PCIe ) do host.

Então, para um disco rígido via SATA:

<--------- PC --------->         <------ Harddisk ------>

PC south-      SATA host          SATA device       Device
bridge    ---- controller ....... controller   ---- SoC
           ^^               ^^                  ^^
        PCIe-Bus          SATA-Bus        Some kind of bus

O controlador host pode existir na placa-mãe ou como um cartão separado. O PC pode ler / gravar nos registradores do controlador host, ou fazer DMA, e os controladores hospedeiros os convertem em ações no barramento SATA (ou traduz ações no barramento SATA em valores de registro correspondentes ou ações de DMA). / p>

Algo como um "adaptador de barramento de host" que é transparente para o software não existe nesse sentido, embora seja possível projetar algum dispositivo que emule outro dispositivo (por exemplo, um pendrive emula um disco rígido, usando o mesmo protocolo como seria usado para um disco rígido).

A imagem é a mesma para um teclado conectado via USB:

<--------- PC --------->         <------ Keyboard ------>

PC south-      USB host           USB device       Device
bridge    ---- controller ....... controller   ---- SoC
           ^^               ^^                  ^^
        PCIe-Bus          USB-Bus          Internal bus

Embora aqui o controlador do dispositivo USB seja integrado em um único chip com o controlador embutido no teclado, o barramento é interno e você não o verá quando estiver usando o teclado.

A pilha de software em geral é mais complicada do que você descreve; existem outros protocolos ou mesmo pilhas de protocolo acima do próprio protocolo de bus, e. o protocolo "armazenamento USB" mencionado (que é semelhante ao SCSI) acima do protocolo USB básico, ou o protocolo "USB HID" para o teclado acima do protocolo USB básico.

    
por 30.04.2018 / 17:52
1

Apenas esta questão:

How would then, a device such as an external keyboard connected over USB work?

Quando o dispositivo está conectado, o Windows envia um, por favor, identifique seu próprio comando, e todos os dispositivos USB são necessários para responder a ele.

O Windows consulta seus bancos de dados internos para procurar um driver e configurar o dispositivo. Então o motorista assume a responsabilidade.

Até mesmo um teclado USB simples despeja muita informação. Aviso: Ele tem um número de barramento e um número de dispositivo no barramento para identificar se ele está conectado.

Então tem um número de identificação exclusivo. Os primeiros 4 indicam qual fabricante produziu o dispositivo seguido por um número de dispositivo exclusivo daquele fabricante.

Bus 008 Device 003: ID 03f0:0024 Hewlett-Packard KU-0316 Keyboard
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x03f0 Hewlett-Packard
  idProduct          0x0024 KU-0316 Keyboard
  bcdDevice            3.00
  iManufacturer           1 CHICONY
  iProduct                2 HP Basic USB Keyboard
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           34
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      65
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
Device Status:     0x0000
  (Bus Powered)
    
por 30.04.2018 / 19:14