计算机的硬件基本系统由五大部分组成:运算器、控制器、存储器、输入设备、输出设备(输入设备和输出设备合并称为外设)。
CPU(Central Processing Unit, CPU):由运算器、控制器、寄存器组和内部总线组成。实现程序控制、操作控制、时间控制、数据处理功能。
- 程序控制:CPU通过执行指令来控制程序的执行顺序,这是CPU的重要功能;
- 操作控制:一条指令功能的实现需要若干操作信号配合来完成,CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能进行操作;
- 时间控制:CPU对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要进行严格控制;
- 数据处理:CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用,所以对数据的加工处理也是CPU最根本的任务;
此外,CPU还需要对系统内部和系统外部的中断(异常)做出响应,进行相应的处理;
CPU的性能指标:
运算器
- 算术逻辑单元(Arithmetic and Logic Unit,ALU)(负责处理数据,实现对数据的算术和逻辑运算)
- 累加寄存器AC(其功能是当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。例如:在执行一个减法运算前,先将被减数取出暂存在AC中,再从内存储器中取出减数,然后同AC的内容相减,将所得的结果送回AC中。运算的结果是放在累加器中的,运算器中至少要有一个累加寄存器)
- 数据缓冲寄存器DR( 对内存储器读/写操作时,用DR暂时存放由内存储器读/写的一条指令或一个数据字,将不同时间段内读/写的数据隔离开来。)
DR的主要作用为:
作为CPU和内存、外部设备之间数据传送的中转站;
作为CPU和内存、外围设备之间在操作速度上的缓冲;
在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器;
- 状态条件寄存器PSW(保存指令运行结果的条件码内容,如溢出标志等)组成。执行所有的算术运算,如加减乘除等;执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等。
控制器
运算器只能完成运算,而控制器用于控制整个CPU的工作,它决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,而且能够处理异常事件。控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑
- 指令控制逻辑要完成:取指令、分析指令和执行指令的操作,其过程分为取指令、指令译码、按指令操作码执行、形成下一条指令地址等步骤
(1)指令寄存器(IR)
当CPU执行一条指令时,先把它从内存储器取到缓冲寄存器中,,再送入IR暂存,指令译码器根据IR的内容产生各种微操作指令,控制其他的组成部件工作,完成所需的功能。(2)程序计数器(PC)
PC具有寄存信息和计数两种功能,又称为指令计数器。程序的执行分两种情况,一时顺序执行,二是转移执行。在程序开始执行前,将程序的起始地址传入PC,该地址在程序加载到内存时确定,因此PC的内容及时程序第一条指令的地址。执行指令时,CPU自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对PC加1。当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或向后转移的位移量得到,或者根据转移指令给出的直接转移的地址得到。
(3)地址寄存器(AR)
AR保存当前CPU所访问的内存单元的地址。由于内存和CPU存在着操作速度上的差异,所以需要使用AR保存地址信息,直到内存的读/写操作完成为止。(4)指令译码器(ID)
指令包含操作码和地址码两部分,为了能执行任何给定的指令,必须对操作码进行分析,以便识别所完成的操作。指令译码器就是对指令中的操作码字段进行分析解释,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,完成所需功能。
- 时序控制逻辑要为每条指令按时间顺序提供应有的控制信号。
- 总线控制逻辑是为多个功能部件服务的信息通路的控制电力。
- 中断控制逻辑用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU处理。
存储器
分为内部存储器和外部存储器;内部存储器速度高、容量小,一般用于临时存放程序、数据及中间结果;外部存储器速度慢、容量大,可以长期保存程序和数据;
按按信息可保存型分类,分为易失性存储器和非易失性存储器。
按计算机中的作用(层次)分类,分为高速缓冲存储器、主存储器和辅助存储器。
1、高速缓冲存储器(Cache)
Cache的作用:为了解决CPU和主存之间速度不匹配而采用的技术。
cache特性:具有空间局部性以及时间局部性。
cache的组成:SRAM和控制逻辑。如果cache在CPU芯片外,它的控制逻辑一般和主存控制逻辑合成在一起,称主存/cache控制器。若cache在CPU内,则由CPU提供它的控制逻辑。
CPU与cache之间的数据交换是以字为单位,而cache与主存之间的数据交换是以块为单位。一个块由若干字组成,是定长的。
想要搞清 按字寻址 和 按字节寻址 就要先搞清位、字节、字长、字的定义 :
位:数据存储的最小单位。计算机中最小的数据单位,一个位的取值只能是0或1;
字节:由八位二进制数组成,是计算机中最基本的计量单位,也是最重要的计量单位(个人理解)。
字长:计算机中对CPU在单位时间内能处理的最大二进制数的位数叫做字长。
字:字是不同计算机系统中占据一个单独的地址(内存单元的编号)并作为一个单元(由一个或多个字节组合而成)处理的一组二进制数。
下面是我对于 按字寻址 和 按字节寻址 的理解:按字节寻址:最通俗的理解就是一组地址线的每个不同状态对应一个字节的地址。比如说有24根地址线,按字节寻址,而且每根线有两个状态,那么24根地址线组成的地址信号就有2^24个不同状态,每个状态对应一个字节的地址空间的话,24根地址线的可寻址空间2^24B,即16MB。
按字寻址:最通俗的理解就是一组地址线的每个不同状态对应一个字的地址。因为字节是计算机中最基本的计量单位且一个字由若干字节构成,所以计算机在寻址过程中会区分字里面的字节,即会给字里面的字节编址,这样就会占用部分地址线。比如说有24根地址线,按字寻址,字长16位,16位即两个字节,这样就会占用一根地址线用来字内寻址,这样就剩下23根地址线,所以寻址范围是2^23W,即8MW,这里W是字长的意思。