CPU
中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。中央处理器主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。
计算机的大脑是CPU,它从内存中取出指令并执行之。在每个CPU基本周期中,首先从内存中取出指令,解码以确定其类型和操作数,接着执行之,然后取指、解码并执行下一条指令。按照这一方式,程序被执行完成。
指令集
每个CPU都有一套可执行的专门指令集。所以,Pentium不能执行SPARC程序,而SPARC也不能执行Pentium程序。
从大类来分,一般将指令集分为精简指令集和复杂指令集。
-
CISC(复杂指令集)
即 冯·诺依曼结构(普林斯顿结构),
指令与数据存储在同一存储器中;
采用CISC结构的处理器,指令线与数据线分时复用;
程序指令存储地址与数据存储地址指向同一个存储器的不同物理位置,则程序指令和数据的宽度相同;
取指令与取数据不能同时进行,速度受限;
Intel 8051、Motorola MC68xxx、Atmel AT89
-
RISC(精简指令集)
即 哈佛结构,指令与数据存储于两个不同的存储空间;
程序存储器与数据存储器相互独立,独立编址,独立访问;
分离的程序总线与数据总线在一个机器周期中,可同时获得指令字和操作数,提高执行效率;
取指令和取数据同时进行,且一般指令线宽与数据线,可包含更多的处理信息; Motorola/IBM PowerPC、Atmel AVR、Microchip PIC、ARM
通俗的理解,RISC指令集是针对CISC指令集中的一些常用指令进行优化设计,放弃了一些复杂的指令,对于复杂的功能,需要通过组合指令来完成。自然,两者的使用场合不一样,对于复杂的系统,CISC更合适。否则,RISC更合适,且功耗低。注意,当初本没有RISC和CISC之分。最开始,Intel x86的第一个CPU定义了第一套指令集,这就是最开始的指令集,后来一些公司发现很多指令并不常用,所以决定设计一套简介高效的指令集,称之为RISC指令集,从而将原来的Intel x86指令集定义为CISC指令集。
控制器
控制器是协调和控制计算机运行的
1、程序计数器
程序计数器用来存储下一条指令的地址,CPU工作的时候会循环从程序计数器中拿出指令,当指令被拿出之后,程序计数器又会指向下一条指令。
程序计数器主要是用于提供给其他控制单元当前需要执行的指令地址。
2、时序发生器
时序发生器主要是属于电气工程领域,用于发送时序脉冲。
CPU根据不同的时序脉冲,有节奏的进行工作。
3、指令译码器
指令译码器是控制器的主要部件之一。
计算机指令由操作码和地址码组成。
指令译码器翻译操作码对应的操作以及控制传输地址码对应的数据。
4、指令寄存器
指令寄存器也是控制器的主要部件之一。
指令寄存器从主存或者高速缓存中取出计算机指令,当cpu需要执行相关指令的时候就会从指令寄存器里面把相关指令取出来而不需要从缓存或者主存里面取出指令
指令寄存器是保证cpu可以高效运转的重要部件之一
5、主存地址寄存器
主存地址寄存器用于保存当前cpu正要访问的内存单元的地址。
主存地址寄存器是使用地址总线来与主存来进行相关通信的。
6、主存数据寄存器
用于保存当前CPU正要读或写的主存数据;
主存数据寄存器是使用数据总线来与主存进行通信的;
7、通用寄存器
用于暂时存放或传送数据或指令;
可保存ALU算术逻辑单元的运算中间结果 ;
容量比一般专用寄存器要大;
运算器
运算器主要是用来进行数据运算加工的
1、数据缓冲器
分为输入缓存和输出缓存
输入缓存暂时存放外设送过来的数据。如果ALU正在运算,下一个需要运算的数据就保存在缓冲器的输入缓冲里面。
输出缓存用于暂时存放送往外设的数据,当数据运算完,从ALU输出的时候是保存在数据缓冲器的输出缓冲里面的,等待控制器下一步的命令,送到相应的位置。
2、ALU
ALU:算术逻辑单元,是运算器的主要组成,可以完成常见的位运算(左右移,与或非等),也可以完成常见算术运算(加减乘除等)
3、状态字寄存器
存放运算状态(条件码、进位、溢出、结果正负等);
还存放了运算控制信息(调试跟踪标记位,允许中断位等)
4、通用寄存器
跟控制器里面的通用寄存器类似,用于暂时存放数据或指令;
也可以保存ALU的运算中间结果;
容量比一般专用寄存器要大;
寄存器
寄存器(Register)是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。
1、指令寄存器(IR)
Instruction Register,用来保存当前正在执行的一条指令,当执行一条指令时,首先把该指令从主存读取到数据寄存器中,然后再传送至指令寄存器
2、程序计数器(PC)
Program Counter,用来指出下一条指令在主存储器中的地址,在程序执行之前,首先必须将程序的首地址,即程序第一条指令所在主存单元的地址送入PC,因此PC的内容即是从主存提取的第一条指令的地址
3、地址寄存器(AR)
Address Register,来保存CPU当前所访问的主存单元的地址。
由于在主存和CPU之间存在操作速度上的差异,所以必须使用地址寄存器来暂时保存主存的地址信息,直到主存的存取操作完成为止。
4、数据寄存器(DR)
Data Register,主要用来由主存读取的一条指令或一个数据字
扩展:一个字 = 16bit
5、累加寄存器(AC)
Accumulator,一个通用寄存器。当运算器的算术逻辑单元ALU执行算术或逻辑运算时,为ALU提供一个工作区,可以为ALU暂时保存一个操作数或运算结果
6、程序状态字寄存器(PSW)
Program Status Word,来表征当前运算的状态及程序的工作方式,程序状态字寄存器是一个保存各种状态条件标志的寄存器