Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1337030
  • 博文数量: 482
  • 博客积分: 13297
  • 博客等级: 上将
  • 技术积分: 2890
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-12 16:25
文章分类

全部博文(482)

文章存档

2012年(9)

2011年(407)

2010年(66)

分类: LINUX

2011-09-29 17:40:31

 

以前CPU主要由运算器和控制器两大部分组成,随着集成电路的发展,目前CPU芯片集成了一些其它逻辑功能部件来扩充CPU的功能,如浮点运算器、cacheMMX等。下面我们重点介绍运算器和控制器。CPU组成见下图

1. 控制器的组成和功能

控制器由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成。它是计算机指挥系统,完成计算机的指挥工作。尽管不同计算机的控制器结构上有很大的区别,当就其基本功能而言,具有如下功能:

(1)取指令 从内存中取出当前指令,并生成下一条指令在内存中的地址。

(2)分析指令 指令取出后,控制器还必须具有两种分析的功能。一是对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作。比如一次内存读/写操作,一个算术逻辑运算操作,或一个输入/输出操作。二是分析参与这次操作的各操作数所在的地址,即操作数的有效地址。

(3)执行指令 控制器还必须具备执行指令的功能,指挥并控制CPU、内存和输入/输出设备之间数据流动的方向,完成指令的各种功能。

(4)发出各种微操作命令在指令执行过程中,要求控制器按照操作性质要求,发出各种相应的微操作命令,使相应的部件完成各种功能。

(5)改变指令的执行顺序在编程过程中,分支结构、循环结构等非顺序结构的引用可以大大提供编程的工作效率。控制器的这种功能可以根据指令执行后的结果,确定下一步是继续按原程序的顺序执行,还是改变原来的执行顺序,而转去执行其它的指令。

(6)控制程序和数据的输入与结果输出这实际也是一个人机对话的设计,通过编写程序,在适当的时候输入数据和输出程序的结果。

(7)对异常情况和某些请求的处理当计算机正在执行程序的过程中,发生了一些异常的情况,例如除法出错、溢出中断、键盘中断等。

 

下面详细介绍控制器的各组成部件的功能与结构:

(1)指令寄存器(IR) CPU执行一条指令时,先把它从内存储器取到缓冲寄存器中,然后再送到指令寄存器。然后送到指令译码器部件,产生各种微操作指令,控制其它的组成部件工作,完成所需的功能。

(2)程序计数器(PC) 为了保证程序能够周而复始、有条不紊地执行下去,CPU必须具有某些功能保证在执行完当前指令时能知道下一条指令的地址。而程序计数器(PC)正是起到这种作用,所以通常又称为指令计数器。程序计数器工作分两种情况,一是顺序执行,二是转移执行。在程序开始执行前,将程序的起始地址送入PC,这在程序加载到内存时以确定,因此PC的内容即是从内存的第一条指令的地址。当执行指令时,CPU将自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC1。当遇到转移指令如JMP指令时,后继指令的地址(即PC的内容)不能像通常一样按顺序来取得,而是根据当前指令的地址加上一个向前或向后转移的位移量相加的和得到,或者根据转移指令给出的直接转移的地址得到。因此程序计数器的结构应当是具有寄存信息和计数两种功能的结构。

(3)地址寄存器(AR) 地址寄存器用来保存当前CPU所访问的内存单元的地址。由于在内存和CPU之间存在着操作速度上的判别所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。而且地址线和数据线大多数是分时复用的,我们也要地址存储器来暂时保存有关的地址数据。我们明显地看到,当CPU和内存进行信息交换,即CPU向内存存/取数据时,或者CPU从内存中读出指令时,都要使用地址寄存器和数据缓冲寄存器。同样,如果我们把外围设备的设备地址作为像内存的地址单元那样来看待,那么,当CPU和外围设备交换信息时,我们同样使用地址寄存器和数据缓冲寄存器。地址寄存器的结构和数据缓冲寄存器、指令寄存器一样,通常使用单纯的寄存器结构。信息的存入一般采用电位-脉冲方式,即电位输入端对应数据信息位,脉冲输入端对应控制信号,在控制信号作用下,瞬时地将信息打入寄存器。

(4)指令译码器(ID) 指令分为操作码和地址码两部分,为了能执行任何给定的指令,必须对操作码进行分析,以便识别所完成的操作。指令译码器就是对指令中的操作码字段进行分析解释,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,完成所需的功能。

 

2.运算器的组成和功能

运算器由算术逻辑单元(ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器组成,它是数据加工处理部件,完成计算机的各种算术和逻辑运算。相对控制器而言,运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。运算器有两个主要功能:

(1)执行所有的算术运算,如加、减、乘、除等基本运算及附加运算;

(2)执行所有的逻辑运算,并进行逻辑测试,如与、或、非、零值测试或两个值的比较等。

 

下面详细介绍运算器的各组成部件的组成和功能

 

(1)算术逻辑单元(ALU) 算术逻辑单元是运算器的重要组成部件,负责处理数据,实现对数据的算术运算和逻辑运算,详见前面的描述。

(2)累加寄存器(AC) 累加寄存器AC通常简称为累加器,它是一个通用寄存器。其功能是:当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。例如,在执行一个减法运算前,先将被减数暂取出放在AC中,再从内存储器中取出减数,然后同AC的内容相减,所得的结果送回AC中。运算的结果是放在累加器中的,运算器中至少要有一个累加寄存器。目前CPU中的累加寄存器,多达16个、32个,甚至更多。当使用多个累加器时,就变成通用寄存器堆结构,其中任何一个可存放源操作数,也可存放结果操作数。在这种情况下,需要在指令格式中对寄存器号加以编址。

(3)数据缓冲寄存器(DR) CPU中引脚大多是复用的,在不同的时间内,具有不同的功能。在对类存储器进行读写操作时,用数据缓冲寄存器用来暂时存放由内存储器读写的一条指令或一个数据字,将我们在不同的时间段内读写的数据隔离开来。缓冲寄存器的作用具体有如下几点:作为CPU和内存、外部设备之间住处传送的中转站;补偿CPU和内存、外围设备之间在操作速度上的差别;在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器。

(4)状态条件寄存器(PSW) 状态条件寄存器保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,大体包括两种:一是状态标志:如运算结果进位标志(C),运算结果溢出标志(V),运算结果为零标志(Z),运算结果为负标志(N);二是控制标志,如中断标志(I),方向标志(D),单步标志等。这些标志们通常分别由1位触发器保存,保存了当前指令执行完成之后的状态。通常,一个算术操作产生一个运算结果,而一个逻辑操作则产生一个判决。在第二章中已经详细介绍了运算器的结构与功能,在本章把重点放在介绍控制器上。

 

PSW即程序状态字,Program Status Word

    程序状态寄存器PSW是计算机系统的核心部件——控制器的一部分,PSW用来存放两类信息:一类是体现当前指令执行结果的各种状态信息,如有无进位(CF位),有无溢出(OF位),结果正负(SF位),结果是否为零(ZF位),奇偶标志位(PF位)等;另一类是存放控制信息,如允许中断(IF),跟踪标志(TF位)等。有些机器中将PSW称为标志寄存器FRFlag Register)。

 

====

http://blog.fhedu.net.cn/user1/fhccc/200991661016.html

阅读(1258) | 评论(0) | 转发(0) |
0

上一篇:结构体对齐详解

下一篇:sizeof()用法汇总

给主人留下些什么吧!~~