A ULA (Unidade lógica e aritmética), é a parte do CPU responsável por realizar operações aritméticas e lógicas.
Essa unidade recebe como entrada os dois operandos (no caso da arquitetura MIPS eles possuem 32 bits), e um seletor de operação a ser realizada com esses operandos. A representação numérica que deve ser levada em conta é a de complemento de 2, que simplifica as operações usando números com sinais.

Funções

Considerando a ULA de n-bits do esquema acima, se considerarmos um sinal de operador de 3 bits podemos ter as seguintes operações:

Função
000 AND
001 OR
010 +
011não utilizado
100 AND
101 OR
110 -
111SLT

Note que o sinal é passado para um inversor que vai opcionalmente inverter a entrada .

Implementação

Uma possível implementação desse circuito pode ser visto na figura abaixo:

Note a divisão do sinal , enquanto apenas controla a inversão da entrada o sinal controla o multiplexador que seleciona a saída da operação desejada.

Instrução SLT

A arquitetura MIPS possui uma instrução set-on-less-than, que retorna 1 se e 0 caso contrário. Do ponto de vista do hardware, essa é uma instrução aritmética.
Para implementá-la basta saber que se , então . Portanto, basta subtrair um operando do outro e depois verificar o bit de sinal do resultado (lembrando que estamos usando representação numérica em complemento de 2), para saber se o resultado da subtração foi positivo ou negativo.

Instrução BEQ

A arquitetura mips possui uma instrução de branch condicional BEQ (branch-if-equal), para implementá-la podemos utilizar a subtração. Se , então , sabendo disso basta subtrair os dois operandos e verificar se o resultado da substração é 0. Para fazer essa verificação basta efetuar a operação OR entre todos os bits da saída.