Реализация команды - PullRequest
       15

Реализация команды

0 голосов
/ 19 декабря 2018

Я немного растерялся из-за понимания реализации конкретной команды.

В этом примере передана команда 0x00c6ba23, которая в двоичном виде 0000 0000 1100 0110 1011 1010 0010 0011

Япытаясь найти входы блока управления ALU для этой инструкции.

Из этого я вижу

  • код операции = 0100011
  • imm [4: 0] = 10100
  • funct3 = 011 (неверно ...)
  • rs1 = 01101
  • rs2 = 01100
  • imm [11: 5] = 0000000

Я использую это изображение для декодирования it

How the ALU control bits are set depends on the ALUOp control bits and the different opcodes for the R-type instruction

Мой вопрос, какполучить управляющие биты ALU и управляющие биты ALUOp для этой функции?И почему функция SD, хотя функция 3 показывает 011 вместо 111?

1 Ответ

0 голосов
/ 19 декабря 2018

... почему функция SD, хотя функция 3 показывает 011 вместо 111?

011 является правильной.Биты funct3 должны быть 011, чтобы это была инструкция SD.Согласно странице 105 из https://content.riscv.org/wp-content/uploads/2017/05/riscv-spec-v2.2.pdf инструкция SD имеет формат:

    | imm[11:5] | rs2 | rs1 | 011 | imm[4:0] | 0100011 |

Если бы биты funct3 были равны 111, тогда эта инструкция не была бы SD.

... как получить управляющие биты ALU и управляющие биты ALUOp для этой функции?

Поскольку это инструкция SD, вы можете читать эти биты прямо из строки SD нижней таблицына диаграмме, на которую вы ссылаетесь в своем вопросе.

...