MIPS — архитектура и система команд

MIPS (англ. Microprocessor without Interlocked Pipeline Stages) — микропроцессор, разработанный компанией MIPS Computer Systems в соответствии с концепцией проектирования процессоров RISC.

  1. Схема

    MIPS_single_cycle.gif

  2. Цикл работы процессора
    • Загрузка инструкции (IF = Instruction Fetch)
    • Декодирование инструкции, выделение команды и операндов, чтение регистров (ID = Instruction Decode)
    • Фактическое выполнение инструкции (Ex = Execute)
    • Сохранение регистра в память, Загрузка регистра из памяти (MEM = Memory access)
    • Запись результата регистр (WB = Writeback)
    1.Микрокоманды и микропрограмма
    • Инструкция уровня языка ассемблера может быть разбита на отдельные микрокоманды. Программа интерпретирующая машинные инструкции называется микропрограммой. Микропрограмма позволяет на одном и том же наборе аппаратуры реализовать разные архитектуры.
  3. MIPS
    • 4GB оперативной памяти.
    • Инструкции одинаковой длины 32 бита.
    • 32 регистра общего назначения размером 32 бита.
    • Регистр $0 всегда возвращает 0.
    • Регистры PC, Hi, Lo.
  4. Типы и форматы инструкций.
    • Инструкции делятся на три типа: R, I и J. Каждая инструкция начинается с 6-битного кода. В дополнение к коду, инструкции R-типа определяют три регистра, область размера сдвига регистра, и область функции; инструкции I-типа определяют два регистра инепосредственное значение; инструкции J-типа состоят из кода операции и 26-битного адреса перехода.

    Тип

    −31− формат (в битах) −0−

    R

    код (6)

    rs (5)

    rt (5)

    rd (5)

    сдвиг (5)

    функция (6)

    I

    код (6)

    rs (5)

    rt (5)

    непосредственное значение (16)

    J

    код (6)

    адрес (26)

  5. Инструкции типов I и R.

    • Схема исполнения:

    MIPS-1_1.jpg

    • Арифметические:
      • add, addu, sub, subu, mult, multu, div, divu
      • addi, addiu
    • Логические:
      • and, or, xor, nor, slt
      • andi, ori, xori, slti
    • Сдвига:
      • sll, srl, sra
    • Передачи данных:
      • mfhi, mflo
  6. Пример программы:

   1 ## Program to assemble the instruction ori  $8,$9,0x004A
   2 ##
   3 
   4         or    $25,$0,$0        # clear $25
   5         ori   $11,$0,0xD       # opcode
   6         ori   $12,$0,0x9       # operand $s
   7         ori   $13,$0,0x8       # dest. $d
   8         ori   $14,$0,0x004A    # immediate operand
   9         
  10         sll   $11,$11,26       # shift opcode into position
  11         or    $25,$25,$11      # or it into the instruction
  12         
  13         sll   $12,$12,21       # shift operand $s into position
  14         or    $25,$25,$12      # or it into the instruction
  15         
  16         sll   $13,$13,16       # shift dest $d into position
  17         or    $25,$25,$13      # or it into the instruction
  18         
  19         or    $25,$25,$14      # or const into the instruction
  20         
  21         ori   $8,$9,0x004A     # The actual assembler
  22                                # should create the same machine
  23                                # instruction as we now have in $25
  24 
  25 ## end of file

   1 ## handMadeNeg.asm
   2 ## 
   3 ## Program to demonstrate two's complement negative
   4 ##
   5 ## The program adds +146 to -82, leaving the result in $10
   6 
   7         ori      $7, $0, 146        # put +146 into $7
   8         ori      $8, $0,  82        # put 82 into $8
   9         nor      $8, $8,  $0        # reflect
  10         ori      $9, $0,   1        # 
  11         addu     $8, $8,  $9        # add 1: $8 = -82
  12         addu    $10, $7,  $8        # (+146) + (-82)
  13 
  14 ## End of file

   1 ## Mult.asm
   2 ## 
   3 ## Program to calculate 5 * x - 74
   4 ##
   5 ## Register Use:
   6 ##  $8   x
   7 ##  $9   result
   8 ##
   9 ##  $10  5
  10 ##  $9,$10 result
  11 
  12         ori      $8, $0, 12        # put x into $8
  13         sll      $9, $8,  2        # $9 = 4x
  14         addu     $9, $9, $8        # $9 = 5x
  15         addiu    $9, $9,-74        # $9 = 5x - 74
  16 
  17         ori      $10, $0, 5        # $10 = 5
  18         multu     $8, $10
  19         mfhi     $9
  20         mflo     $10
  21         addiu    $10, $10, -74
  22         nop
  23 ## End of file

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