alu
DESCRIPTION
Arquitectura de Computadores, ALUTRANSCRIPT
������ �
���� �� � ����� �� �� ����� ���
�� ����
���������
����������� �� ��� ��� ����� �� �������� ����� �� ��� ����
������� ������������� ������� ����� ���� ���� ������ ����� �� ��
����� �� �������� ���� ������ ���� ����������� ���� ����� ����
��� ���� ��� ���� ��� ����� �� ���� � ��� �� ! ���� � "#�$ �
�� ����� �� ������� % �� �����&'�
�������( )�*���+� �� &' ,�-�
������ ����������
�� ��������� �� �� � �� �� �� ���� �� ����� ������� ��� ��� �� �� � ���� ������� !� ���� �� ����� �� �"����� �� ������#�� $� %& !'(���)* +, %+� !'(���)* �� %����)* ��- %��������.�) � ��/ ��� ���� ���� � �0 ����� 1� �������#���� ��!�� �������� �� "���� �� � ��(����� ����� �(���� �� ��"��������
�� ����!�� � �������.� �� �� �����2� ��� ���������* ��!������ � "������������ �� �� �� ���� ��� ��� 3 ������#�� � ��!������ ��� ��������� �� ���4���� ��!�������� ��!�����
+ �!��� ���� ����� !�� � ����.� ��(�����* 5�� �������� ���� "���� ����������! � ���� �� ���� �� ����� �������!�����* ������!6� �� � �����!�� ��� ��(������ !�����* 5�������.� ����!��� � �!��� �� ����!��.� ����� ����.� !����������!7
• ����� � ��������� � 8�6� �� ������9* :�� ��� ����������� ��� ������� ������������������� ���������;* �0(� ��< �=�* ���(�� >��"���� ���!��6���* �� ��� �.�* �??@� ��-$ � 33@A< =?� B�
• ���6�C�� D�!�����6�!�* :����� ���� ����� ��� ��� ����� � ���������;* �������� �!!* �<<�� ��-$ < �� <@<?@� ?�
�?
��������� ������ � � ��� �� ���
���� �������� � ��������� �� �� �� ����� ��������� � �������� �������� � �������� �� ������� �� � ��� � � ������� �� ������ ������ ��� �� ����� �� �� �� ! ���� ������� ��� �� �� � ��� ���� ��������� � � ���"����# $��� �������� � ���������� ���� ������#
�# �� �� � ��� ������� ������ ������ �� �����%&�� ���� '����� �� ����������� ����������� � ��(�� �� �����%&�� �)"���� *+ � ,- .�"�� �!/# -� ������ ��� ������ �� ����� ���������� � ������������ !0� ���������� �� � �������� � ��������� ��1�� �� ��0 � $��)"��� � � *���)"��� ��� �������� �� � ��� � � �#
a
b0
1
operation
result
2�"�� �!0 �� �� � ��� � ������ �� �����%&�� ,- � *+#
!# � ������ � �����%3� �� ���� �� �� �� � ���� ������������ ��� � ��������� � ��� �������� ���� � � �� ������ �� �"�� 4� �������� � �� �� �"�� � �� �������� ��� � � �� ������ �� �����1��� 5 �� �)��� �� 6# 7��� ������� �"�� 4� �� ������� �� ! ���� � �8���� �� �����%&�� ��������� �'����������� ��� � �8���� �� �������� �� ������������ ������ �� ����� ������%3�# �������������� � ���������� ������ �� ������ cin � cout#
a
b
cin
i2
cin
i1
operation
cout
sum
+
1
0
result
cout
2
MU
X
2�"�� � 0 �� �� � ��� � ������ �� �����%&�� ,-� *+ � ����#
# 7�����)���� �� �� �� ! ���� � ������ �� �����%&�� ,-� *+ � ����� ��������� ��"�%3� �� ! ��� ���� � � �� ������ �� ����� ��������# ,� �� �� ! ������ �"�� �5� � ����� �� ���������� �� ��1�� �� �� �� ����� i .couti/ � ��"��� ������� �� ���������� �� ������� �� �� �� ����� i + 1 .cini+1/#
5# �������� � �� �� ! ���� �� ���� � ����� �'����� ������%&�� �� ������� �������������� �� ����������� ���� !# �������"�� � ������� �� ����������%3� ��
!9
a
b
cin
cout
b0
a0ALU 0
operation
result result0
a
b
cin
cout
b1
a1ALU 1
operation
result result1
a
b
cin
cout
b31
a31ALU 31
operation
result result31
...
cin operation
������ ��� � � �� ���� �� � ���� �� �� ���� � ��� �� ����
��������!� "�� a b � ��#�� � a− b = a+ b+1� � �� b $ � ����# � "�� ����� � b � ����# � "�� ���� � ��� "%� �� ���$�&� ��� ��� ����# � �"' ��!� ������� � �� "%� �� � �� ����� ���� � � ��� � ( ����� � ���� � ��������!� � a ��� b� �"�#��&� � "� � � � ���� �� ��#���# ����� ��� �� � # ����"� � � ��"���� ��"�� �� � "�� b b )��� ��"�� ��*�� � ��������!� "� (���� a+ b+1 (�#������� +�, �� � ��#���� �� ���� "�� a b � � ��� +�, $ �"�����*���� "� � � �� ����� ����'$� �� "����� cin �� � � � ��� � "�� ���"�-����'� .ALU 0/� ���' * �� ��� $ ��� "����� �� � � ������� � � � ���� �#� ���� � ���� � � ����� �� �� ���� � ��� ��� ���� ��������!�� $ ��� � "���� "� -���� �0
i2
cin
i1
cout
sum
+
1
0
2
MU
X
a
b
cin
0
1
operationBinvert
cout
result
������ �0� � � � ��� �� � ���� �� �� ���� � ��� ��� ���� ��������!�
��
�� � ��� �� �� �� ��� �� ���� ����� � � �������� �� � � � � ��� �������� �������� ��� ���� ���� ����� � � !�� � ������� ��� �� ��" �������� ##��#$ �� ����� ������ � � ��� � %�� ��&��� � ##��## � � ��� � ��� �� !��� � ����� $ � ��� ���� � ������� ���' � ������(� ��� ��"� ��� ��� ������� �)��� ���������� � %�� ������ �� �������� �� ���' ���� *�� ���� � ��� ��+&��� $, ��� -��� �������' ���&���� � � ���� �� +&��� $,' � �&��� � .#. ��� ����%�� �� ������ � �� �$ � #� !��� ��� ���� less �� ��� ��� � �&�+���/�' ������ ������� � %�� ��� ���( .$. %���� �������� �� �������� ����� ����� � ��&��� ������ � �� ������� � � ��&��/ � ���( .#. �� �������� �� �������� � � � ��/ � ����' � ������� less �� ALU 0 � ���� � � � �� ���� � �������� �� �������� ������(�� 0 ������� ���' � ��1�' � ������� less �� ALU 0 � ����� � � ��2�� sum � � ��� � �� ��� ��� �&�+���/� �ALU 31�� 3���� � � ' �ALU 31 ��� %�� ��� �������� ��� �����' � � 1���/ �� ��� ��"�� ���� ��� ����� � � ��2�� sum � � ��� �4 ��2�� ��� �� +&��� $, ���
5 � �� ���� /���6�� �� ��� �� $ � ����2��� �� +&��� $,' � �� � ������*�� ���� �� �� �� � � !� �+&��� $7��
,� !��� � ����� � ��� � � !�' ����� ������ ����� ��� ��� ���� � ���� �' ��%�� � ����� �� ������ ������� � ���� �� � � ���8� � �� � ��&�� � � ������ ��� ���� ����� � �� &���� � � ������� � � ��&�� � � ����������� � ���� �������� �� ���' �� %�� �������� �� �������� � ��� %���� � � ������ � �� &��� � � �������� �� "�� %���� � � ������ � �� ���������4a − b = 0 ⇔ a = b� !��� /��+��� �� �������� �� �������� � � �� ��� '���"�*�� �� 9�*�:&� ��&�� ����� � �� �� �� �������� �� ��� �+&��� $;��
!��� �������� � ������ �� �������� ����"��� ��� ������6�� �� �������� '��� ���� ���� � ���� ��' � ���� ��� � ������ �<� %�� ��� .$.' ��%���� %�� ������������ �� �����6�� �=3' 9> � � �� ��&�*�� %�� ����� ���� ��1�� .#.� ! ����� ' � ���� ��� � ������ �� ������ &���' � ���� � � �� ��� ������2� � � � ��8�� ����4 ������ �� +&��� $;� 5 ����� � ������� ������ �� �� � � �������� � ������ ��� $4#� ���*�� � ������� 8��� � ������ � � � ��' %������ � ������ � �������� ���� ��� ������ $�� � ��� � � !� � ��������������� �2� � �� +&��� $?�
����� ��������� ������ �� ��
��� ���
��� ��
��� ��
��� ��� �����
��� ���
����� $4 5 ����� ��<��� ����� /�� � ������ � ���� �� � ��� � operation � � ������ ��������� ���� ��� � � !��
-� ���������' � ��� � ���������� � �������� �� +&��� $; � �� ���� �� $ � � �%�� ��� � � �����2�� ��� �����*�� �� +&��� $,�
��
result
3
2+
a
b 0
1
Binvert
less
sum
cin
cout
i1
i2
cin
cout set(ii)
(i)
+
a
b 0
1
Binvert
less
sum
cin
cout
cout
i1
i2
cin
m1
s1
m1
o1
a1
o1
a1
s1
1
0
operation
MU
X result
3
2
1
0
operation
MU
X
������ ��� � � � ��� �� ����� �� � ���� � ����� �� �� ���� � ��� !� �������������"� ��� ���� ����� #�$ � ���� �� ���� % � &% #��$ � ���� � ��� �������'�(����)� #��� &�$*
+&
a0b0
a31b31
operation
operation
operation
cin
cin
cout
cin
cout
...
cin
cout
Binvert
Binvert
Binvert
ALU 31
ALU 1
ALU 0
a1b1
set
result
Binvert
’0’
’0’
operation
result
result
result1
result0
result31
less
ab
less
ab
less
ab
cout
������ ��� � � �� ���� �� ����� �� � ���� � ����� �� �� ���� � !� "#� �����
��������$� ��� ���� ����%
�&
a0b0
a31b31
operation
operation
operation
cin
cout
cin
cout
...
cin
cout
Binvert
Binvert
Binvert
ALU 31
ALU 1
ALU 0
a1b1
set
result
Bnegate
’0’
’0’
operation
result
result
less
ab
less
ab
less
ab
...
result31
result1
result0
zero
cout
������ ��� � � �� �� ����� ��� ������� �������� �� ��������� !� "#� �����
��$�����%� � ��� ���� ����&
'(
cout
result [31:0]
zero
ALU
operation [2:0]
a [31:0]
b [31:0]
������ ��� �� � ���� � ��� � ����
��