Внешние устройства и ввод/вывод

Устройства компьютера возожно разделить на два вида:

Вычислительная система состоящая только из процессора и памяти мало полезна. Для повышения практической полезности ЭВМ снабжается периферийными устройствами(ПУ).

Внешние(периферийные) устройства ЭВМ, - устройства, предназначенные для внешней машинной обработки информации (в отличие от преобразований информации, осуществляемых центральным процессором). По роду выполняемых операций П. у. подразделяются на след. группы: устройства подготовки данных, служащие для занесения информации на промежуточные носители данных (перфорационные карты, перфорационные ленты, магнитные ленты, магнитные диски и др.); устройства ввода - для считывания информации и её преобразования в кодовую последовательность электрических сигналов, подлежащих передаче в центральный процессор; устройства вывода - для регистрации результатов обработки информации или их отображения (дисплей, принтер, графопостроитель и др.); устройства хранения больших объёмов информации (запоминающие устройства на магнитных дисках ...); устройства передачи информации на большие расстояния, обеспечивающие взаимодействие многих пользователей с ЭВМ (аппаратура передачи данных и др.).

  1. ПУ имеют регистры. На программном уровне всё управление ПУ сводится к чтению/записи регистров устройства.

    CPU

    r/w

    ПУ

    <->

    Data registers

    -->

    Control registers

    <--

    Status registers

    При работе с ПУ процессор выполняет функции, к числу которых относится:

    • арбитраж (выбор устройств по приоритету);
    • поиск периферийного устройства по заданному адресу;
    • передача периферийному устройству команды на исполнение;
    • анализ состояния ПУ (получение от ПУ информации об его состоянии);

    • поискПУ, запрашивающего обслуживание;

    • прием и передача данных от ПУ;

    • управление памятью.
  2. Порт(многозначность и связанная с этим путаница). IN, OUT.

  3. Отображение регистров на память("MMIO").
  4. Программный опрос ПУ, как способ организации взаимодействия.

  5. Пример терминала в Mars:

    Tools -> Keyboard adn Display MMIO Simulator

       1 # Memory mapped address of device registers.
       2 # 0xFFFF0000 rcv contrl
       3 # 0xFFFF0004 rcv data
       4 # 0xFFFF0008 tx contrl
       5 # 0xFFFF000c tx data
       6 
       7         .text
       8 main:
       9 loop:
      10         jal     getc
      11         beq $v0,0x32, exit
      12         ori     $a0, $v0, 0
      13         jal     putc
      14 
      15         nop
      16         nop
      17         nop
      18         nop
      19         nop
      20         j loop
      21 exit:
      22         li      $v0, 10
      23         syscall
      24 
      25 getc:
      26 #       v0 = received byte
      27         lui     $t0,0xffff
      28 gcloop:
      29         lw      $t1,0($t0)              # read rcv ctrl
      30         andi    $t1,$t1,0x0001          # extract ready bit
      31         beq     $t1,$0,gcloop           # keep polling till ready
      32         lw      $v0,4($t0)              # read data and rtn
      33         jr      $ra
      34 
      35 putc:
      36 #       a0 = byte to trransmit
      37         lui     $t0,0xffff
      38 pcloop:
      39         lw      $t1,8($t0)              # read tx ctrl
      40         andi    $t1,$t1,0x0001          # extract ready bit
      41         beq     $t1,$0,pcloop           # wait till ready
      42         sw      $a0, 0xc($t0)           # write data
      43         jr      $ra
      44 
      45         .data
    
  6. Примечания:
    • Keyboard adn Display MMIO Simulator использует для управления и передачи данных четыре регистра:
    • 0xFFFF0000 rcv contrl
      • bits

        31-2

        1

        0

        target

        unused

        Int

        ready

    • 0xFFFF0004 rcv data
      • bits

        31-8

        7-0

        target

        unused

        Resived Byte

    • 0xFFFF0008 tx contrl
      • bits

        31-2

        1

        0

        target

        unused

        Int

        ready

    • 0xFFFF000c tx data
      • bits

        31-8

        7-0

        target

        unused

        Transmitted Byte

ArchitectureAssembler2015/17_DeviceIO (последним исправлял пользователь FrBrGeorge 2024-06-17 12:51:19)