alu

8

Upload: catia-mesquita

Post on 06-Mar-2016

216 views

Category:

Documents


0 download

DESCRIPTION

Arquitectura de Computadores, ALU

TRANSCRIPT

Page 1: ALU

������ �

���� �� � ����� �� �� ����� ���

�� ����

���������

����������� �� ��� ��� ����� �� �������� ����� �� ��� ����

������� ������������� ������� ����� ���� ���� ������ ����� �� ��

����� �� �������� ���� ������ ���� ����������� ���� ����� ����

��� ���� ��� ���� ��� ����� �� ���� � ��� �� ! ���� � "#�$ �

�� ����� �� ������� % �� �����&'�

�������( )�*���+� �� &' ,�-�

������ ����������

�� ��������� �� �� � �� �� �� ���� �� ����� ������� ��� ��� �� �� � ���� ������� !� ���� �� ����� �� �"����� �� ������#�� $� %& !'(���)* +, %+� !'(���)* �� %����)* ��- %��������.�) � ��/ ��� ���� ���� � �0 ����� 1� �������#���� ��!�� �������� �� "���� �� � ��(����� ����� �(���� �� ��"��������

�� ����!�� � �������.� �� �� �����2� ��� ���������* ��!������ � "������������ �� �� �� ���� ��� ��� 3 ������#�� � ��!������ ��� ��������� �� ���4���� ��!�������� ��!�����

+ �!��� ���� ����� !�� � ����.� ��(�����* 5�� �������� ���� "���� ����������! � ���� �� ���� �� ����� �������!�����* ������!6� �� � �����!�� ��� ��(������ !�����* 5�������.� ����!��� � �!��� �� ����!��.� ����� ����.� !����������!7

• ����� � ��������� � 8�6� �� ������9* :�� ��� ����������� ��� ������� ������������������� ���������;* �0(� ��< �=�* ���(�� >��"���� ���!��6���* �� ��� �.�* �??@� ��-$ � 33@A< =?� B�

• ���6�C�� D�!�����6�!�* :����� ���� ����� ��� ��� ����� � ���������;* �������� �!!* �<<�� ��-$ < �� <@<?@� ?�

�?

Page 2: ALU

��������� ������ � � ��� �� ���

���� �������� � ��������� �� �� �� ����� ��������� � �������� �������� � �������� �� ������� �� � ��� � � ������� �� ������ ������ ��� �� ����� �� �� �� ! ���� ������� ��� �� �� � ��� ���� ��������� � � ���"����# $��� �������� � ���������� ���� ������#

�# �� �� � ��� ������� ������ ������ �� �����%&�� ���� '����� �� ����������� ����������� � ��(�� �� �����%&�� �)"���� *+ � ,- .�"�� �!/# -� ������ ��� ������ �� ����� ���������� � ������������ !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

Page 3: ALU

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� � � � ��� �� � ���� �� �� ���� � ��� ��� ���� ��������!�

��

Page 4: ALU

�� � ��� �� �� �� ��� �� ���� ����� � � �������� �� � � � � ��� �������� �������� ��� ���� ���� ����� � � !�� � ������� ��� �� ��" �������� ##��#$ �� ����� ������ � � ��� � %�� ��&��� � ##��## � � ��� � ��� �� !��� � ����� $ � ��� ���� � ������� ���' � ������(� ��� ��"� ��� ��� ������� �)��� ���������� � %�� ������ �� �������� �� ���' ���� *�� ���� � ��� ��+&��� $, ��� -��� �������' ���&���� � � ���� �� +&��� $,' � �&��� � .#. ��� ����%�� �� ������ � �� �$ � #� !��� ��� ���� 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�� ��� �����*�� �� +&��� $,�

��

Page 5: ALU

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

������ ��� � � � ��� �� ����� �� � ���� � ����� �� �� ���� � ��� !� �������������"� ��� ���� ����� #�$ � ���� �� ���� % � &% #��$ � ���� � ��� �������'�(����)� #��� &�$*

+&

Page 6: ALU

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

������ ��� � � �� ���� �� ����� �� � ���� � ����� �� �� ���� � !� "#� �����

��������$� ��� ���� ����%

�&

Page 7: ALU

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

������ ��� � � �� �� ����� ��� ������� �������� �� ��������� !� "#� �����

��$�����%� � ��� ���� ����&

'(

Page 8: ALU

cout

result [31:0]

zero

ALU

operation [2:0]

a [31:0]

b [31:0]

������ ��� �� � ���� � ��� � ����

��