有关CPU的进展和汇编语言的实例设计.docx
《有关CPU的进展和汇编语言的实例设计.docx》由会员分享,可在线阅读,更多相关《有关CPU的进展和汇编语言的实例设计.docx(28页珍藏版)》请在冰点文库上搜索。
有关CPU的进展和汇编语言的实例设计
有关CPU的进展和汇编语言的实例设计
【摘要】CPU(CentralProcessingUnit)是计算机的核心,负责处理、运算计算机内部的所有数据。
本文研究了CPU的构成和原理,并介绍了与CPU关系密切的汇编语言,利用汇编语言编写了一下典型的实例。
第一章是CPU和汇编语言的一些简介;第二章介绍了CPU的结构原理、控制方式和控制流程等方面的内容;第三章从CPU的历史入手,对CPU的发展前景进行了展望;第四章中总结了一些汇编语言的作用和特点;第五章中利用汇编语言编写了一些典型的实例来加深对汇编语言的认识。
【关键字】CPU;汇编语言;实例设计
【Abstract】CPU(CentralProcessingUnit)isthecoreofthecomputer,inresponsibleofdealingandcalculatingallthedatainsidethecomputer.Inthepassage,westudystructureandprincipleofCPU,andintroducetheassemblylanguagewhichisclosetotheCPUutilization,andthetypicalexampleofassemblylanguage.
ThefirstchapterisashortintroductionofCPUandassemblylanguage.ThesecondchapteristheCPUcontrolmodeandstructuralprinciple,controlprocessetc.ThethirdchapterstartsfromthehistoryofCPU,andprospectsthedevelopmentofCPU.Thefourthchaptersummarizessomeassemblylanguagefunctionsandfeatures.Thefifthchapterusingassemblylanguagesometypicalexamplestodeepentheunderstandingofassemblylanguage.
【keywords】CPU;AssemblyLanguage,;exampledesign
目录
1引言1
2CPU的基本原理2
2.1CPU的基本组成3
2.2CPU的工作原理4
3CPU的最新进展9
3.1CPU发展的简史9
3.2CPU的发展——GPU和CPU的融合10
4汇编语言的作用和特点11
4.1汇编语言的作用11
4.2汇编语言的主要特点12
5汇编语言典型实例设计16
5.1条件转移指令16
5.2算术运算指令18
5.3移位运算指令20
5.4综合实例21
6结束语24
参考文献25
1.引言
CPU是中央处理单元(CentralProcessingUnit)的缩写,它可以被简称做微处理器(Microprocessor),不过经常被人们直接称为处理器(processor)。
CPU是计算机的核心,其重要性好比大脑对于人一样,因为它负责处理、运算计算机内部的所有数据。
CPU的发展可以说决定着微型计算机技术的发展。
[2]
计算机的工作是依靠机器语言来实现的,而机器语言由于编写的程序不易读、出错率高、难以维护等原因,不能得到广泛应用。
在机器语言的基础上,用助记符代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。
这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。
由于在某些领域中汇编语言的特点较适合编写程序,因此汇编语言得到了广泛的应用。
[5]
2.CPU的基本原理
2.1CPU的基本组成
CPU通常包含运算部件、寄存器组、微命令产生部件、时序系统等主要部件,由CPU内部的总线将这些部件连接起来,实现它们之间的信息交换。
其中,运算部件和一部分寄存器属于传统运算器部分,另一部分寄存器、微命令产生部件、时序系统等则属于传统控制器部分。
2.1.1运算部件
运算部件的任务是对操作数进行加工处理。
基本的运算部件主要由三部分组成,如图1-1所示。
(1)输入逻辑操作数可以来自各种寄存器,也可以来自CPU内部的数据线。
每次运算最多只能对两个数据进行操作。
(2)算术、逻辑运算部件ALU(ArithmeticLogicUnit)是运算部件的核心,完成具体的运算操作。
它的主要部件就是一个加法器,负责对两个操作数进行求和运算。
(3)输出逻辑运算结果可以直接送往接收部件,也可以经左移或右移后再送往接收部件,所以输出逻辑往往具有移位功能,常用移位门(多路选择器),通过斜位传送实现左移、右移或字节交换。
2.1.2寄存器组
计算机工作时,CPU需要处理大量的控制信息和数据信息,例如对指令信息进行译码,以便产生相应控制命令;对操作数进行算术或逻辑运算加工,并且根据运算结果决定后续操作,等等。
因此,在CPU中需要设置若干寄存器,暂时存放这些信息。
2.1.3微命令产生部件
计算机的工作体现为指令序列的连续执行,实现信息传送要靠微命令的控制,因此在CPU中设置微命令产生部件,根据控制信息产生微命令序列,对指令功能所要求的数据传送进行控制,且在数据传送至运算部件时控制完成运算处理。
微命令产生部件可由若干组合逻辑电路组成,也可以由专门的存储逻辑组成。
因此,产生微命令的方式也就分为组合逻辑控制方式和微程序控制方式两种。
2.1.4时序系统
计算机的工作常常是分步执行的,需要有一种时间信号作为分步执行的标志,如周期、节拍等。
节拍是执行一步操作所需的时间,一个周期可能包含几个节拍。
这样,一条指令在执行过程中,根据不同的周期、节拍信号,就能在不同的时间发出不同的微命令,完成不同的操作。
周期、节拍、脉冲等信号称为时序信号,产生时序信号的部件称为时序发生器或时序系统,它由一个振荡器和一组计数分频器组成。
振荡器是一个脉冲源,输出频率稳定的主振脉冲,也称时钟脉冲,为CPU提供时钟基准。
时钟脉冲经过一系列计数分频,产生所需的节拍(时钟周期)信号或持续时间更长的工作周期(机器周期)信号。
2.2CPU的工作原理
2.2.1运算器基本原理
一.ALU的组成
利用集成电路技术,可将若干位全加器、并行进位链、输入选择门等3部分集成在一块芯片上,称为多功能算术、逻辑运算部件ALU。
下面以一位ALU单元(图2-1)来分析。
一位ALU单元可划分为3部分。
(1)一位加法器:
包括由两个半加器构成的一位全加器和由与或非门构成的一位进位门。
(2)一位输入选择器:
由一对与或非门构成。
本位输入两个操作数iA、iB或者Ai、Bi,4个控制信号S3、S2、S1、S0,可选择16种功能。
(3)控制门:
用来选择ALU做算术运算或逻辑运算。
当输入控制信号M=0时,开门接收低位来的进位信号Ci-1,执行算术运算;当M=1时,关门不接收Ci-1,执行逻辑运算,即按位进行运算,与进位无关。
二.运算方法
计算机中各种复杂的运算处理都可以根据算法分解为四则运算或基本的逻辑运算,而四则运算最终可以归结为加法运算。
下面以定点加减法为例,讨论CPU中算法的逻辑实现。
计算机中,带符号的数有原码、补码、反码等几种表示方法。
原码加减运算复杂,而补码加减运算则比较简单,因而计算机中基本采用补码加减法。
补码加减是指:
操作数用补码表示,连同符号位一起运算,结果也用补码表示。
补码加减所依据的基本关系是:
(X+Y)补=X补+Y补
(X-Y)补=X补+(-Y补)
补码加减算法运算规则如下。
①参与运算的操作数用补码表示,符号位作为数的一部分直接参与运算,所得运算结果即为补码表示形式。
②若操作码为加,则两数直接相加。
③若操作码为减,则将减数变补后再与被减数相加。
2.2.2寄存器与寄存器寻址方式
PU是所有运算进行的地方,内存中的两个数不能直接进行运算,寄存器是为了完成运算提供“场地”的记忆单元。
在指令中,指定操作数或操作数存放位置的方法称为寻址方式。
其中寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器。
寄存器寻址方式有以下两个主要优点,
①从CPU的寄存器中读取操作数要比访问主存快得多,所需时间大约是从主存中读数时间的几分之一到几十分之一。
因此在CPU中设置足够多的寄存器,以尽可能多地在寄存器之间进行运算操作,已成为提高工作速度的重要措施之一。
②由于寄存器数远少于主存储器的单元数,所以指令中存放寄存器号的字段位数也就大大少于存放主存地址码所需位数。
采用寄存器寻址方式,可以大大减少指令中一个地址的位数,从而有效地缩短指令长度。
这也就减少了读取指令的时间,提高了工作速度。
表1通用寄存器的主要用途
寄存器的分类
寄存器
主 要 用 途
通
用
寄
存
器
数据
寄存器
AX
乘、除运算,字的输入输出,中间结果的缓存
AL
字节的乘、除运算,字节的输入输出,十进制算术运算
AH
字节的乘、除运算,存放中断的功能号
BX
存储器指针
CX
串操作、循环控制的计数器
CL
移位操作的计数器
DX
字的乘、除运算,间接的输入输出
变址
寄存器
SI
存储器指针、串指令中的源操作数指针
DI
存储器指针、串指令中的目的操作数指针
变址
寄存器
BP
存储器指针、存取堆栈的指针
SP
堆栈的栈顶指针
指令指针
IP/EIP
标志位寄存器
Flag/EFlag
32位CPU的
段寄存器
16位CPU的
段寄存器
ES
附加段寄存器
CS
代码段寄存器
SS
堆栈段寄存器
DS
数据段寄存器
新增加的
段寄存器
FS
附加段寄存器
GS
附加段寄存器
2.2.3CPU时序控制方式
计算机的许多工作,如指令的执行常常需要分步进行,因此应在微命令的形成逻辑中引入有关的时间标志,即时序信号,使计算机的操作能在不同的时间段中
有序地完成。
很显然,这些操作是受时序信号同步控制的。
计算机中还有一些操作,如系统总线上的一些数据传送则不受时序信号同步控制。
我们将计算机的操作与时序信号之间的关系称为时序控制方式。
按照同步或非同步的关系,可将时序控制方式分为同步控制和异步控制两大类。
在实际应用中常会发生许多变化,如在同步控制的基础上加入异步应答的方式等。
一.同步控制方式
同步控制方式是指用统一发出的时序信号对各项操作进行同步控制。
这里的时序信号指的就是前述的周期、节拍、脉冲等信号;各项操作中有的需要在一段时间内进行,有的则需要在某个时刻定时完成。
在同步控制方式中,操作时间被划分为许多长度固定的时间段,一个时间段就是一个节拍,也称时钟周期。
每个时钟周期完成一步操作,至于一步操作要做哪些事,不同的机器有不同的安排。
时钟周期作为基本的时序单位,一旦确定,便固定不变,这是同步控制方式的主要特点。
CPU根据统一的时钟周期为指令的执行安排严格的时间表,各操作必须按时间表执行。
同步控制方式的优点是时序关系简单,时序划分规整,控制不复杂,控制部件在结构上易于集中,设计方便。
因此在CPU内部、其他部件或设备内部,广泛采用同步控制方式。
在系统总线上,如果各部件、设备之间的传送距离不太长,工作速度的差异不太大,或者传送所需的时间比较固定,也广泛采用同步控制方式。
同步控制方式的缺点是在时间的安排上可能不合理。
因为各步操作实际所需的时间可能不同,如果将它们安排在统一的固定时钟周期内完成,必然要根据最长操作所需的时间来确定时钟周期的宽度,而对于需时较短的操作则存在着时间上的浪费。
在这种情况下,为了合理利用时间,系统总线上的传送操作也可采用异步控制方式来实现。
二.异步控制方式
异步控制方式是指各项操作不受统一时序信号(如时钟周期)的约束,而是根据实际需要安排不同的时间。
各操作之间的衔接、各部件之间的数据传送均采用异步应答方式。
应答的双方分别称为主设备与从设备,主设备是指能申请并且掌握总线控制权的设备(主动的一方);从设备是指响应主设备要求的设备(被动的一方),从设备不能掌握总线权。
应答过程由主设备启动。
在这一过程中,首先由主设备申请使用总线,获得批准后主设备掌握总线控制权,向总线发送操作命令、总线地址等信息。
之后,主设备向从设备提出传送要求,并且询问从设备是否准备好。
从设备回答,如果还未准备就绪,主设备便等待;如果从设备已经准备好,主设备便可与之进行数据传送,将数据送往从设备,或从从设备接收数据。
从主设备提出申请到获得批准、从主设备发出询问到收到从设备回答等阶段所需的时间,以及实际传送时间都可根据需要而变化,体现了异步的含义。
异步控制方式的优点是时间安排紧凑、合理,能按不同部件、不同设备的实际需要分配时间;缺点是控制比较复杂。
因此很少在CPU内部或设备内部采用异步控制方式,而是用它来控制某些场合下的系统总线操作。
三.联合控制方式
所谓联合控制方式,是同步和异步控制方式的结合。
对于不同的操作序列以及其中的每个操作,实行部分同意、部分区别对待的方式。
亦即,把各操作序列中那些可以同意的部分,安排在一个具有固定周期、节拍和严格时钟同步的时序信号控制下执行,而把那些难于统一起来,甚至执行时间都难于确定的操作另行处理,不用时钟信号同步,按照实际需要占用操作时间,通过“结束—起始”方式和公共的同步控制部分衔接起来。
现代计算机大多采用同步控制方式或联合控制方式。
2.2.4CPU的控制流程
计算机对信息进行处理是通过不断执行程序来实现的。
程序是能完成某个确定算法的指令序列,所以计算机进行信息处理的过程就是不断地取指令、分析指
令和执行指令这样一个周而复始的过程。
CPU控制流程如图2-2所示,它由以下4步完成:
(1)取指令。
由程序计数器(PC)指出当前指令地址,通过执行“MAR←(PC)”和“Read”命令,从主存中取出指令。
(2)分析指令。
对取出的指令进行分析,指出它执行什么操作,产生相应的操作控制信号。
如果参与操作的数据在主存中,则还需要形成操作数地址。
(3)执行指令。
根据指令分析得到的“操作命令”和“操作数地址”,按一定的算法行程相应的操作控制命令序列,通过运算器、存储器以及外部设备的具体执行,实现每条指令的功能。
(4)对异常情况和某些请求的处理。
当机器出现某些异常情况,此时有这些部件或设备发出“中断请求”信号,待执行完毕当前指令后,CPU相应该请求,中止当前执行的程序,转去执行中断服务程序。
当处理完毕后,再返回源程序继续运行。
2.2.5CPU的实例分析
Pentium微处理器是INTEL80x86系列微处理器的第五代产品,其性能比它的前一代产品有较大幅度的提高。
与相同工作频率下的80486相比,整数运算性能提高一倍,浮点运算性能提高近四倍。
常用的整数运算指令与浮点运算指令采用硬件电路实现,不再使用微码解释执行,使指令的执行速度进一步加快。
Pentium微处理器之所以有如此高的性能,在于该微处理器体系结构采用了一系列新的设计技术,如双执行部件、超标量体系结构、集成浮点部件、64位数据总线、指令动态转移预测、回写数据高速缓存、错误检测与报告等。
[1]
(1)超标量体系结构
Pentium微处理器具有3条指令执行流水线:
两条独立的整数指令流水线(分别称为U流水线与V流水线)与一条浮点指令流水线。
两条整数指令流水线都拥有它们独立的算术逻辑运算部件,地址生成逻辑和高速数据缓存接口。
每个时钟周期可以同时执行两条指令,因而相对同一频率下工作的80486来说,其性能几乎提高一倍。
这种能够一次同时执行多条指令的处理器结构称为超标量体系结构。
(2)浮点指令流水线与浮点指令部件
浮点指令流水线具有八级,实际上它是U流水线的扩充。
U流水线的前四级用来准备一条浮点指令,浮点部件中的后四级执行特定的浮点运算操作并且报告执行错误。
此外在浮点部件中,对常用的浮点指令(加、减、除)采用专用硬件电路执行,而不像其他指令由微码来执行。
因此,大多数浮点指令都可以在一个时钟周期内完成,这比相同频率下的80486浮点处理性能提高了四倍。
(3)指令转移预测部件
大多数情况下,程序指令的执行是一条指令接着一条指令顺序进行的。
指令流水线正是利用了这个特点。
在同一时刻内,多个部件同时操作并且形成流水线,这样可提高指令执行的吞吐量。
但是程序中不时也有转移执行情况,即下一条指令需从另一存储区获取并且执行,转移执行指令会冲掉流水线已有的内容,重新装载指令流水线,这样会降低流水线效率和指令执行速度。
如果微处理器知道何时发生转移和跳转的目标地址,可不暂停流水线的操作,处理器的执行速度才不会降低。
由于程序局部性原则,使得转移预测部件在大多数情况下能够正确预测,这就足以将微处理器的性能提高不少。
(4)数据和指令高速缓存
Pentium芯片内部有两个超高速缓冲存储器,一个是8KB的数据Cache,另一个是8KB的指令Cache,它们可以并行操作。
这种分离的高速缓存结构可以减少指令预取和数据操作之间可能发生的冲突,提高微处理器的信息存取速度。
数据Cache除具有80486Cache的通写方式外,还增加了数据回写方式,即Cache数据修改后,不是立即写回主存,而是推迟到以后写入。
这种延迟写入主存的方式减少了片内高速缓存与主存交换信息所占用的系统总线的时间,这对于多处理器共享一个公共的主存时特别有价值。
当然,具有回写方式的数据Cache需要有更复杂的Cache控制器。
(5)Pentium的内部寄存器
Pentium微处理器对80486的寄存器作了如下扩充。
EFLAGS标志寄存器增加了两位:
VIF(位19)、VIP(位20),它们用于控制Pentium虚拟8086方式扩充部分的虚拟中断。
控制寄存器CR0的CD位和NW位被重新定义以控制Pentium的片内高速缓存,新增CR4控制寄存器对80486结构进行扩充。
还增加了几个模式专用寄存器,用于控制可测试性、执行跟踪、性能监测和机器检查错误等。
3.CPU的最新进展
3.1CPU发展的简史
3.1.1早期的CPU
1971年世界上第一款微处理器是Intel公司推出的4004,这是第一款可以用于微机的4位处理器;
1974年8080成为第二代处理器;
1978年Intel公司生产的8086是第一个16位的处理器;
问世后不久,INTEL公司就进行改进,诞生了80186;
1982年,Intel公司研制出了80286微处理器,有了显著的改进;
1985年10月17日,INTEL划时代的产品———80386DX正式发布了。
标志着CPU进入32位的时代;
1989年,80486芯片由INTEL推出。
性能比80386提高了4倍。
3.1.2奔腾时代
1993年,全面超越486的新一代586CPU问世,INTEL公司把自己的新一代产品命名为(PENTIUM)奔腾。
1996年推出了PENTIUMMMX,处理多媒体数据时,能得到更好的性能;
1998年INTEL正式推出采用新核心的PENTIUM2微处理器;
1999年又发布了采用Katmai核心的新一代微处理器—PentiumⅢ;
2000年推出了奔腾4,从此也进入了奔腾的最后时代。
3.1.3多核时代
2005年INTEL和AMD公司都推出了各自的双核处理器,PD805和Athlon3600+,虽然技术仍不成熟,但是已经标志着多核时代的到来。
2006年INTEL推出了Core2Duo处理器,AMD推出了Athlon64系列,从此双核技术开始走向成熟,并逐渐发展到三核、四核、更多核。
3.2CPU的发展——GPU和CPU的融合
3.2.1融合技术发展的背景
从06年双核CPU推出后,CPU性能的提高绝大部分来自核心数量的增多。
但几年的发展之后,采用更多核心来提升CPU性能的办法遇到了瓶颈,于是专家们纷纷寻找别的思路来提升CPU的性能。
而最近几年来,由于市场的需要和技术的成熟,GPU(图形处理器)技术得到了前所未有的发展,CPU除了处理游戏的AI,情节等方面的数据外,对于有些图像方面也是由它完成的。
还有有些特性比如重力特性以前是由CPU来完成,现在有些GPU也能支持了,这些任务就由GPU来完成了。
GPU相当于专用于图像处理的CPU,正因为它专,所以它强,在处理图像时它的工作效率远高于CPU
由于GPU本身和CPU相比的一些优势,以及图形图像处理的地位提升,CPU的研发者们开始认识到了GPU的重要性。
。
微软发布windows7其中一个显著特性就是联合GPU和CPU的强大实力,提升GPU在硬件使用的价值,在Windows7中,CPU与GPU组成了协同处理环境。
CPU运算非常复杂的序列代码,而GPU则运行大规模并行应用程序。
微软利用DirectXCompute将GPU作为操作系统的核心组成部分之一。
windows7以后GPU的硬件地位将仅次于CPU,发挥出更大的效用。
3.2.2融合技术的最新进展
2010年1月8日,英特尔推出2010全新Core(酷睿)处理器家族,英特尔将GPU图形单元和CPU核心组合在一起,再加上双通道DDR3控制器和PCI-E2.0控制器,搭配出了全新的Clarkdale核心(Corei5-600/i3-500系列)。
Clarkdale是CPU史上首款整合有GPU的处理器,同时也是首款采用32nm制造技术的CPU,具有开创性的历史意义。
[10]
AMD与此同时也提出了自己关于GPU和CPU融合的计划Fusion计划。
并把计划中的新型CPU称为APU(AccelerateProcessingUnit),将绘图处理器整合进CPU,强调更小、散热更佳的处理器设计。
事实上在几年前AMD收购ATI时便提出Fusion计划,要将GPU与CPU整合至单一芯片中,推动CPU、GPU协同运算,以提升AMD处理器效能。
不过之后一直未落实计划推出产品。
[6]
2010年6月3日终于在Computex展会上正式展示FusionAPU,计