ALU
算术逻辑单元(Arithmetic Logic Unit, ALU)是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由"And Gate" 和"Or Gate"构成的算术逻辑单元,主要功能是进行二进制的算术运算,如加减乘(不包括整数除法)。基本上,在所有现代CPU体系结构中,二进制都以二补数的形式来表示。
定义计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件(ALU)。计算机运行时,运算器的操作和操作种类由控制器决定。运算器处理的数据来自存储器;处理后的结果数据通常送回存储器,或暂时寄存在运算器中。
数据运算器的处理对象是数据,所以数据长度和计算机数据表示方法,对运算器的性能影响极大。70年代微处理器常以1个、4个、8个、16个二进制位作为处理数据的基本单位。大多数通用计算机则以16、32、64位作为运算器处理数据的长度。能对一个数据的所有位同时进行处理的运算器称为并行运算器。如果一次只处理一位,则称为串行运算器。有的运算器一次可处理几位 (通常为6或8位),一个完整的数据分成若干段进行计算,称为串 并行运算器。运算器往往只处理一种长度的数据。有的也能处理几种不同长度的数据,如半字长运算、双倍字长运算、四倍字长运算等。有的数据长度可以在运算过程中指定,称为变字长运算。
按照数据的不同表示方法,可以有二进制运算器、十进制运算器、十六进制运算器、定点整数运算器、定点小数运算器、浮点数运算器等。按照数据的性质,有地址运算器和字符运算器等。
操作运算器能执行多少种操作和操作速度,标志着运算器能力的强弱,甚至标志着计算机本身的能力。运算器最基本的操作是加法。一个数与零相加,等于简单地传送这个数。将一个数的代码求补,与另一个数相加,相当于从后一个数中减去前一个数。将两个数相减可以比较它们的大小。
左右移位是运算器的基本操作。在有符号的数中,符号不动而只移数据位,称为算术移位。若数据连同符号的所有位一齐移动,称为逻辑移位。若将数据的最高位与最低位链接进行逻辑移位,称为循环移位。
运算器的逻辑操作可将两个数据按位进行与、或、异或,以及将一个数据的各位求非。有的运算器还能进行二值代码的16种逻辑操作。
乘、除法操作较为复杂。很多计算机的运算器能直接完成这些操作。乘法操作是以加法操作为基础的,由乘数的一位或几位译码控制逐次产生部分积,部分积相加得乘积。除法则又常以乘法为基础,即选定若干因子乘以除数,使它近似为1,这些因子乘被除数则得商。没有执行乘法、除法硬件的计算机可用程序实现乘、除,但速度慢得多。有的运算器还能执行在一批数中寻求最大数,对一批数据连续执行同一种操作,求平方根等复杂操作。
运算方法实现运算器的操作,特别是四则运算,必须选择合理的运算方法。它直接影响运算器的性能,也关系到运算器的结构和成本。另外,在进行数值计算时,结果的有效数位可能较长,必须截取一定的有效数位,由此而产生最低有效数位的舍入问题。选用的舍入规则也影响到计算结果的精确度。
结构运算器包括寄存器、执行部件和控制电路3个部分。
在典型的运算器中有3个寄存器:接收并保存一个操作数的接收寄存器;保存另一个操作数和运算结果的累加寄存器;在进行乘、除运算时保存乘数或商数的乘商寄存器。执行部件包括一个加法器和各种类型的输入输出门电路。控制电路按照一定的时间顺序发出不同的控制信号,使数据经过相应的门电路进入寄存器或加法器,完成规定的操作。
为了减少对存储器的访问,很多计算机的运算器设有较多的寄存器,存放中间计算结果,以便在后面的运算中直接用作操作数。
为了提高运算速度,某些大型计算机有多个运算器。它们可以是不同类型的运算器,如定点加法器、浮点加法器、乘法器等,也可以是相同类型的运算器。
运算器由算术逻辑单元(ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器组成,它是数据加工处理部件。相对控制器而言,运算器接受控制器的命令而进行动作 ,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的所以它是执行部件。
主要功能执行所有的算术运算;
执行所有的逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
下面举例8位ALU的两种设计方案使用原理图方法设计:
http://patrick.wagstrom.net/projects/academic/iiter/schematics/8alu.html
使用VHDL方法设计:
8-Bit ALU in VHDL
This arithmetic logic unit accepts 8-bit inputs, but it can easily be modded to higher bits. It supports the addition, subtraction, set if less than, AND, and OR operations. The operation to perform is determined by the 3-bit address bus.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
ENTITY alu8bit IS
port(a, b : in std_logic_vector(7 downto 0); -- a and b are busses
op : in std_logic_vector(2 downto 0);
zero : out std_logic;
f : out std_logic_vector(7 downto 0));
END alu8bit;
architecture behavioral of alu8bit is
begin
process(op)
variable temp: std_logic_vector(7 downto 0);
begin
case op is
when "000" =>
temp := a and b;
when "100" =>
temp := a and b;
when "001" =>
temp := a or b;
when "101" =>
temp := a or b;
when "010" =>
temp := a + b;
when "110" =>
temp := a - b;
when "111" =>
if a < b then
temp := "11111111";
else
temp := "00000000";
end if;
when others =>
temp := a - b;
end case;
if temp="00000000" then
zero <= '1';
else
zero <= '0';
end if;
f <= temp;
end process;
end behavioral;
以此我们可以推出4位、32位等等的ALU设计方法。
生物学中ALUALU序列
Alu重复序列是哺乳动物基因组中SINE家族的一员,约有50万份拷贝。也就是说平均4~6 kb中就有一个 Alu序列。由于这种DNA序列中有限制性内切核酸酶 Alu工的识别序列AGCT,所以称为 Alu重复序列。典型的人基因组 Alu序列长282 bp,由两个同源但有差别的亚基构成。亚基来源于有缺失突变和点突变的7SLRNA基因。两个亚基间由腺嘌呤核苷酸密集的序列连接。右边的亚基中有无关的31 bp插入片段,称为IH。 Alu序列两端各有一个正向重复序列,末端有一个poly(A)尾。
Alu序列一般散在分布,少数呈簇状分布。在细胞遗传学水平上观察, Alu重复序列集中在基因转录最活跃的染色体区段内。在所有已知的基因内含子中,几乎都发现了 Alu序列。
与 Alu序列亚基有很高同源性的7SLRNA是7SRNA的一部分,是将蛋白质运送到内质网以便分泌出胞外的信号识别颗粒(signal—recognition particle,SRP)的组成部分。7SRNA5,端的90个核苷酸同 Alu序列左端同源,中间的160个核苷酸与 Alu序列没有同源性,而3,端的40个核苷酸与 Alu序列右端同源。7SRNA基因是由RNA聚合酶Ⅲ转录的。人体 Alu重复序列绝大多数要由RNA聚合酶Ⅲ转录成RNA,而且 Alu 3,端有polyA尾,这些都提示 Alu重复序列是通过RNA为中介,反转录成DNA后整合在基因组新位置上的。这里要提及的是,所有真核细胞里都含有3种RNA聚合酶;RNA聚合酶I负责转录rRNA基因,产生核糖体RNA(ribosomal RNA,rRNA);RNA聚合酶Ⅱ负责转录所有编码蛋白质的基因,产生信使RNA(messenger RNA,mRNA),再由多聚腺嘌呤核苷酸聚合酶(poly(A)polymerase)负责加上poly(A)尾;RNA聚合酶Ⅲ负责转录转移RNA(transfer RNA,tRNA)以及细胞核和细胞质内的各种小RNA,这些被转录的基因一般长300bp左右,且在基因组的重复拷贝数可达几千份甚至上百万份。
Alu家族不同成员之间的一致序列(consensus sequence)的同一性平均达87%。小鼠基因组内约有5万份拷贝的B1重复序列,长130 bp,与 Alu的一个亚基的同源性达70%--80%。
哺乳动物基因组中为什么有这么多重复拷贝的DNA序列,目前还不是很清楚。现已发现, Alu序列中有一个14 bp的区段同乳多空病毒(papova virus)如SV40病毒,以及乙型肝炎病毒的复制起始序列几乎完全相同。这提示 Alu序列很可能同真核生物基因组中的复制起始有某种相关,但这也存在争论。因为 Alu重复序列的拷贝数比复制起始点的预期数多出几十倍。此外还发现,中国仓鼠的 Alu类家族( Alu-equivalent family)的一些成员,当位于其他转录单位附近时,能在体内被转录生成单独的RNA分子。