计算机组成
早期cpu由运算器和控制器组成,称为中央处理机。随着ULSI技术的发展,CPU芯片外部增加了一些逻辑功能部件,CPU越来越复杂,因此CPU基本部分有了运算器、cache、控制器三大部分,称为中央处理器。
CPU具有的功能
指令控制:由于程序是一个指令序列,这些指令的相互顺序不能任意颠倒,必须严格按程序规定的顺序进行。
操作控制: CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应部件,从而控制这些部件按指令的要求进行动作。
时间控制:对各种操作实施时间上的定时。
数据加工:对数据进行算术运算和逻辑运算处理。
CPU的基本组成
控制器:程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成。
控制器的功能:
(1)从指令cache中取出一条指令,并指出下一条指令在指令cache中的位置。
(2)对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作。比如一次数据cache的读/写操作,一个算术逻辑运算操作,或一个输入/输出操作。
(3)指挥并控制CPU、数据cache和输入/输出设备之间数据流动的方向。
运算器:算术逻辑单元(ALU)、通用寄存器、数据缓冲寄存器DR和状态条件寄存器PSW组成。
运算器的功能:
(1)执行所有的算术运算。
(2)执行所有的逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
通常,一个算术操作产生一个运算结果,而一个逻辑操作则产生一个判决。
CPU的结构
CPU中的主要寄存器
(1)数据缓冲寄存器(DR)
数据缓冲寄存器用来暂时存放ALU的运算结果,或由数据存储器读出的一个数据字,或来自外部接口的一个数据字。缓冲寄存器的作用是:
1.作为ALU运算结果和通用寄存器之间信息传送中时间上的缓冲;
2.补偿CPU和内存、外围设备之间在操作速度上的差别。
(2)指令寄存器(IR)
指令寄存器用来保存当前正在执行的一条指令。
1.当执行一条指令时,先把它从指令cache存储器(简称指存)读出,然后再传送至指令寄存器。
2.对操作码进行测试,以便识别所要求的操作。(指令译码器的工作)指令寄存器中操作码字段的输出就hi指令译码器的输入。
3.操作码一经译码之后,即可向操作控制器发出具体操作的特定信号。
(3)程序计数器(PC)
为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。
1.程序执行之前,必须将它的起始地址(第一条指令所在的指存单元地址)送入PC,因此PC的内容即是从指存提取的第一条指令的地址。
2.当执行指令时,CPU将自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址。
3.由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1.
(4)数据地址寄存器(AR)
用来保存当前CPU所访问的数据cache存储器中(简称数存)单元的地址。
1.作用:由于要对存储器阵列进行地址译码,所以必须使用地址寄存器来保持地址信息,直到一次读/写操作完成为止。
2.信息的存入一般采用电位-脉冲方式,即电位输入端对应数据信息位,脉冲输入端对应控制信号。(结构和数据缓冲寄存器、指令寄存器不一样)
3.在控制信号作用下,瞬时地将信息打入寄存器。
(5)通用寄存器(R0~R3)
当算术逻辑单元(ALU)执行算术或逻辑运算时,为ALU提供一个工作区。
例如:在执行一次假发运算时,选择两个操作数(分别放在两个寄存器)相加,所得的结果送回其中一个寄存器(如R2)中,而R2中原有的内容即被替换。
在众多通用寄存器中,其中任何一个可存放源操作数,也可存放结果操作数。
(6)状态字寄存器(PSW)
功能:
1.保存由算术指令和逻辑指令运算或测试结果建立的各种条件代码。
如:运算结果进位状态(C),运算结果溢出标志(V),运算结果为零标志(Z),运算结果为负标志(N)。这些标志通常为1位触发器保存。
2.保存中断和系统工作状态等信息,以便使CPU和系统能及时了解机器运行状态和程序运行状态。因此,状态条件寄存器是一个由各种状态条件标志拼凑而成的寄存器。
指令周期
指令周期:取出一条指令并执行这条指令的时间。
单周期:在一个CPU周期中完成取指和执行操作(少数指令可实现)。
多周期:大多数指令需要在多个CPU周期中完成指令周期的全部操作。
五条基本指令
一、MOV指令(传送指令,RR型)
MOV RO,R1
MOV执行(R1)->R0
MOV取指周期
1.程序计数器PC中装入第一条指令地址101(八进制);
2.PC的内容被放到指令地址总线ABUS(I)上,对指存进行译码,并启动读命令;
3.从101号地址读出的MOV指令通过指令总线IBUS装入指令寄存器IR;
4.程序计数器内容加1,变成102,为取下一条指令做好准备。
5.指令寄存器中的操作吗(OP)被译码;
6.CPU识别出是MOV指令。至此,取指周期即告结束。
MOV执行周期
1.操作控制器(OC)送出控制信号到通用寄存器,选择R1(10)作源寄存器,选择R0作目标寄存器;
2.OC送出控制信号到ALU,指定ALU做传送操作;
3.OC送出控制信号,打开ALU输出三态门,将ALU输出送到数据总线DBUS上。注意,任何时候DBUS上只能有一个数据。
4.OC送出控制信号,将DBUS上的数据,入到数据缓冲寄存器DR(10);
5.OC送出控制信号,将DR中的数据10打入到目标寄存器R0,R0的内容由00变为10.至此,MOV指令执行结束。
二、LAD指令(取数指令,RS型)
LAD R1,6
LAD从数存6号单元取数(100)->R1
LAD取指周期
步骤和MOV取指周期相同。
LAD执行周期
1.操作控制器OC发出控制命令打开IR输出三态门,将指令中的直接地址码6放到数据总线DBUS上;
2.OC发出操作命令,将地址码6装入数存地址寄存器AR;
3.OC发出读命令,将数存6号单元中的数100读出到DBUS上;
4.OC发出命令,将DBUS上的数据100装入缓冲寄存器DR;
5.OC发出命令,将DR中的数100装入通用寄存器R1,原来R1中的数10被冲掉。至此,LAD指令执行周期结束。
注意,数据总线DBUS上分时进行了地址传送和数据传送,所以需要2个CPU周期。
ADD指令(加法指令,RR型)
ADD R1,R2
ADD执行(R1)+(R2)->R2,结果为(R2)=120
ADD取指周期
步骤和MOV取指周期相同。
ADD执行周期
1.操作控制器OC送出控制命令到通用寄存器,选择R1做源寄存器,R2做目标寄存器;
2.OC送出控制命令到ALU,指定ALU做R1(100)和R2(20)的加法操作;
3.OC送出控制命令,打开ALU输出三态门,运算结果120放到DBUS上;
4.OC送出控制命令。将DBUS上数据打入缓冲寄存器DR;ALU产生的进位信号保存状态字寄存器在PS中;
5.OC送出控制命令,将DR(120)装入R2,R2中原来的内容20被冲掉。至此,ADD指令执行周期结束。
STO指令(存数指令,RS型)
STO R2,(R3)
STO用(R3)间接寻址,(R2)=120写入数存30号单元
STO取指周期
步骤和MOV取指周期相同。
STO执行周期
1.操作控制器OC送出操作命令到通用寄存器,选择(R3)=30做数据存储器的地址单元;
2.OC发出操作命令,打开通用寄存器输出三态门(不经过AU以节省时间),将地址30放到DBUS上;
3.OC发出操作命令,将地址30打入AR,并进行数存地址译码;
4.OC发出操作命令到通用寄存器,选择(R2)=120,作为数存的写入数据;
5.OC发出操作命令,打开通用寄存器输出三态门,将数据120放到DBUS上;
6.OC发出操作命令,将数据120写入数存30号单元,它原先的数据40被冲掉。至此,STO指令执行周期结束。
注意,DBUS是单总线结构,先送地址(30),后送数据(120),必须分时传送。
JMP指令(转移指令)
无条件转移指令,用来改变程序的执行顺序。
JMP 101
JMP改变程序执行顺序到101号单元
JMP取指周期
步骤和MOV取指周期相同。
JMP执行周期
1.OC发生操作控制命令,打开指令寄存器IR的输出三态门,将IR中的地址码101发送到DBUS上;
2.OC发出操作控制命令,将DBUS上的地址码101打入到程序计数器PC中,PC中的原先内容106被更换。于是下一条指令不是从106号单元取出,而是转移到101号单元取出。至此,JMP指令执行周期结束。
小结:
所有指令的取指周期是完全相同的,而且是一个CPU周期。但是指令的执行周期,由于各条指令的功能不同,所用的CPU是各个不相同的。
其中MOV、ADD、JMP指令是一个CPU周期;LAD和STO指令是两个CPU周期。
相关阅读
高通MSM8953即骁龙625,是高通首款采用14nm制程打造的八核心处理器,在为高端智能手机带来优质用户体验的同时,避免了电量的大幅损耗。
今天给大家科普一个电脑知识,那就是内存寻址能力与CPU的位宽有关系吗?答案是没有关系。这个问题以讹传讹了很多人,传了很久,确实有必
前言: 由于想在一台WindowsXP操作系统的台式机上使用虚拟机,但是这个台式机原装的CPU(Intel 奔腾 E2200)不支持虚拟化,所以我找
最近有网友问小编这样一个问题:SDM439是什么CPU?对于SDM439处理器,小编也是第一次听说,根据网友的描述,在vivo官网的vivo U1参数中,处理
你用什么方法查看CPU使用率?除了top和ps,你还知道其他查看CPU使用率的工具吗? 如何查看 CPU 使用率 说道查看 CPU 使用率的工具,大多