Im Buch von Patterson & Hennessy,
Dies ist für diese 4 Anweisungen, wenn ich Anweisungen wie andi, addi, ori, j usw. implementieren muss, füge ich diese Tabelle hinzu? Oder mache ich etwas anderes?
AKTUALISIEREN
Wenn ich etwas hinzufüge, denke ich, dass der schwierige Teil das ALUOp ist. Es gibt nur 2 Bits, ich denke, ich brauche die folgenden Operationen. Und ich fügte hinzu, was meine Vorstellung von einer Umsetzung. Was ist die richtige MIPS-Implementierung?
instr ALUOp
--------+------
AND 0000
OR 0001
add 0100
sub 0101
slt 0111
funct 1xxx
Wobei das MSB (Bit 3) ein "see funct"-Bit ist (Anweisungen vom R-Typ). Bit 2 ist das Bit "Use ALU". Dann sind die letzten 2 die Operationsbits. Ich habe verschiedene Implementierungen gesehen, in denen es mehr Anweisungen wie NOR, XOR, Shift usw. gibt. Gibt es keinen Standard oder den am häufigsten verwendeten Standard?
Wenn die in Ihrem Datenpfad definierte Hardware die neuen Anweisungen unterstützt, ohne neue Steuersignale hinzuzufügen, dann ja, fahren Sie einfach fort und erweitern Sie die Tabelle nach rechts!
Erweiterte Antwort pro erweiterte Frage:
Die Antwort hängt ganz vom Datenpfad und der Bedeutung Ihrer Steuersignale ab ... Ich nehme an, die ALUOp-Bits sind jeweils das Auswahlsignal für einen 2x1-MUX, von denen jeder wiederum die Operandeneingänge für Ihre ALU auswählt. Auf diese Weise können sie verwendet werden, um entweder einen Wert aus einem Register oder den unmittelbaren Wert aus der Anweisung selbst auszuwählen. Für sofortige Anweisungen werden Sie also wahrscheinlich den "Register" -Eingang für Operand 1 und den "unmittelbaren" Eingang für Operand 2 wählen ...
Ich habe dieses Problem vermieden, indem ich 2 weitere Bitleitungen zu ALUOp hinzugefügt habe. Jetzt hatten also alle I-Typ-Befehle, die nicht vom ALUContol-Block decodiert werden konnten, 2 zusätzliche ALUOp-Bits, und ich konnte jetzt 24 weitere Befehle decodieren.
Brian Carlton
AndrejaKo
Jiew Meng