当前位置:首页>编程日记>正文

计算机中算术逻辑单元负责,算术逻辑单元

本站寻求有缘人接手,详细了解请联系站长QQ1493399855

算术逻辑单元(arithmetic and logic unit) 是能实现多组算术运算和逻辑运算的组合逻辑电路,简称ALU。

简介

算术逻辑单元(Arithmetic&logical Unit)是中央处理器(CPU)的执行单元,是所

计算机中算术逻辑单元负责,算术逻辑单元 配图01有中央处理器的核心组成部分,由"And Gate"(与门) 和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算,如加减乘(不包括整数除法)。基本上,在所有现代CPU体系结构中,二进制都以补码的形式来表示。

发展

算术逻辑单元(arithmetic logic unit,缩写ALU)是进行整数运算的结构。现阶段是用电路来实现,应用在电

计算机中算术逻辑单元负责,算术逻辑单元 配图02脑芯片中。

在计算机中,算术逻辑单元(ALU)是专门执行算术和逻辑运算的数字电路。ALU是计算机中央处理器的最重要组成部分,甚至连最小的微处理器也包含ALU作计数功能。在现代CPU和GPU处理器中已含有功能强大和复杂的ALU;一个单一的元件也可能含有ALU。

1945年数学家冯诺伊曼在一篇介绍被称为EDVAC的一种新型电脑的基础构成的报告中提出ALU的概念。

早期发展

1946年,冯诺伊曼与同事合作为普林斯顿高等学习学院(IAS)设计计算机。随后IAS计算机成为后来计算机的原形。在论文中,冯诺伊曼提到他所相信的计算机中所需的部件,而其中包括ALU。 冯诺伊曼写到,ALU是计算机的必备组成部分,因为已确定计算机一定要完成基本的数学运算,包括加减乘除。于是他相信「(计算机)应该含有专门完成此类运算的部件。」

数字系统

ALU必须与数字电路的其他部分使用同样的格式来进行数字处理。对现代处理器而言,数值一律使用二进制补码表示。早期的计算机曾使用过很多种数字系统,包括反码、符号数值码,甚至是十进制码,每一位用十个管子。 以上这每一种数字系统所对应的ALU都有不同的设计,而这也影响了当前对二进制补码的优先选择,因为二进制补码能简化ALU加法和减法的运算。 一个简单的能进行与或非和加运算的2位ALU。

可行性分析

绝大部分计算机指令都是由ALU执行的。ALU从寄存器中取出数据。数据经过处理将运算结果存入ALU输出寄存器中。其他部件负责在寄存器与内存间传送数据。 控制单元控制着ALU,通过控制电路来告诉ALU该执行什么操作。1

简单运算

大部分ALU都可以完成以下运算∶

整数算术运算(加、减,有时还包括乘和除,不过成本较高)

位逻辑运算(与、或、非、异或)

移位运算(将一个字向左或向右移位或浮动特定位,而无符号延伸),移位可被认为是乘以2或除以2。

复杂运算

工程师可设计能完成任何运算的ALU,不论运算有多复杂;问题在于运算越复杂,ALU成本越高,在处理器中占用的空间越大,消耗的电能越多。 于是,工程师们经常计算一个折中的方案,提供给处理器(或其他电路)一个能使其运算高速的ALU,但同时又避免ALU设计的太复杂而价格昂贵。设想你需要计算一个数的平方根,数字工程师将评估以下的选项来完成此操作∶

设计一个极度复杂的ALU,它能够一步完成对任意数字的平方根运算。这被称为单时钟脉冲计算。

设计一个非常复杂的ALU,它能够分几步完成一个数字的平方根运算。不过,这里有个诀窍,中间结果经过一连串电路,就像是工厂里的生产线。这甚至使得ALU能够在完成前一次运算前就接受新的数字。这使得ALU能够以与单时钟脉冲同样的速度产生数字,虽然从ALU输出的结果有一个初始延迟。这被称为计算流水线。

设计一个复杂的ALU,它能够计算分几步计算一个数字的平方根。这被称为互动计算,经常依赖于带有嵌入式微码的复杂控制单元。

在处理器中设计一个简单的ALU,去掉一个昂贵的专门用于此运算的处理器,再选择以上三个选项之一。这被称为协处理器。

告诉编程人员没有协处理器和仿真设备,于是他们必须自己写出算法来用软件计算平方根。这是由软件库完成的。

对协处理器进行仿真,也就是说,只要一个程序想要进行平方根的计算,就让处理器检查当前有没有协处理器。如果有的话就使用其进行计算,如果没有的话,中断程序进程并调用操作系统通过软件算法来完成平方根的计算。这被称为软件仿真。

以上给出的选项按最快和最贵到最慢和最经济排列。于是,虽然甚至是最简单的计算机也能计算最复杂的公式,但是最简单的计算机经常需要耗费大量时间,通过若干步才能完成。 强大的处理器,比如英特尔酷睿和AMD64系列对一些简单的运算采用1号选项,对最常见的复杂运算采用2号选项,对极为复杂的运算采用3号选项。这是具有在处理器中构造非常复杂的ALU的能力为前提的。

输入和输出

ALU的输入是要进行操作的数据(称为操作数)以及来自控制单元的指令代码,用来指示进行哪种运算。它的输出即为运算结果。 在许多设计中ALU也接收或发出输入或输出条件代码到(或来自)状态寄存器。这些代码用来指示一些情况,比如进位或借位、溢出、除数为零等。

ALU与FPU

浮点单元也对两个数值进行算术运算,但是这种运算已浮点数表示,比在ALU中一般使用的补码表示方式复杂的多。为了完成此类运算,FPU里嵌入了多个复杂电路,包括一些内部ALU。 工程师一般认为ALU是处理整数型(比如补码和BCD码)算术运算的的电路,而对更为复杂的格式(比如浮点型、复数型)进行计算的电路则拥有一个更加匹配的称谓。2

特点

ALU用以计算机指令集中的执行算术与逻辑操作;

某些处理器中,将ALU切分为两部分,即算术单元 (AU)与逻辑单元(LU)。某些处理器包含一个以上的AU,如,一个用来进行定点操作,另一个进行浮点操作。(个人计算机中,浮点操作有时由被称为数字协处理器的浮点单元完成)。

通常而言,ALU具有对处理器控制器、内存及输入输出设备的直接读入读出权限。输入输出是通过总线进行的。输入指令包含一个指令字,有时被称为机器指令字,其中包括操作码,单个或多个操作数,有时还会有格式码;操作码指示ALU机要执行什么操作,在此操作中要执行多少个操作数。比如,两个操作数可以进行比较,也可以进行加法操作。 格式码可与操作码结合,告知这是一个定点还是浮点指令;输出包括存放在存储寄存器中的结果及显示操作是否成功的设置。如操作失败,则在机器状态字中会有相应的状态显示 。

通常,输入操作数、操作数、累加和以及转换结果的存储位置都在ALU中。在算术单元中,乘除操作是通过一系列的加减运算得到的。在机器码中有多种方式用以表示负数。

在逻辑单元中,每次执行16个可能的逻辑运算中的一个。

ALU的设计是处理器设计中的关键部分。仍在不断研究如何提高指令的处理速度。3

逻辑单元

逻辑单元(LU)是进入IBM系统网络体系结构(SNA)的网络端口,通过它用户可以访问网络资源,或一个程序员与另一个程序员通信。4

本词条内容贡献者为:

李嘉骞 - 博士 - 同济大学


http://www.coolblog.cn/news/6b16abcc5c0dea98.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • Mac原生Terminal快速登录ssh
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 2019-9
  • jquery 使用小技巧
  • 科学计算工具NumPy(3):ndarray的元素处理
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • linux批量创建用户和密码
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • js常用阻止冒泡事件
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • 【设计模式】 模式PK:策略模式VS状态模式
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里巴巴分布式服务框架 Dubbo
  • 阿里大鱼.net core 发送短信
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • Arm芯片的新革命在缓缓上演
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • 《看透springmvc源码分析与实践》读书笔记一
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • 通过Spark进行ALS离线和Stream实时推荐
  • 行为模式之Template Method模式