计算机基础之CPU架构

算法之Redis集群CRC16算法一文有提到寄存器,今天就来唠唠寄存器与CPU架构。

电子计算机由中央处理器CPU、内部存储器(简称内存)和输入输出设备(简称IO设备)组成。

计算机基础之CPU架构_第1张图片

计算机基础之CPU架构_第2张图片

CPU是计算机的核心。CPU负责解释并执行计算机命令、产生各种信号、令各部件协调工作,使整个系统构成一个有机整体。
MPU---集成在芯片上的CPU,称为微处理器,简称MPU。
MPU总体功能上由运算器、控制器、寄存器组构成。

计算机基础之CPU架构_第3张图片 CPU与内存图​​​​​​
  • 运算器完成各种运算,包括加减乘除等算数运算和与或非等逻辑计算。
  • 控制器负责整个系统的协调。
  • 寄存器是CPU内部临时存放数据的部件。用于存放操作数或运算结果,存储速度比内存更快,可以把数据通过内部总线送往运算器进行运算,或者接受来自运算器的结果。充分利用CPU的内部寄存器可以加快程序的执行速度。 计算机基础之CPU架构_第4张图片 内部结构图

控制器

控制器由程序计数器(PC,Program Counter)、指令寄存器(IR,Instruction Register)、指令译码器(ID,Instruction Decoder)、时序产生器(Timing Generator)、操作控制器(Control Unit)组成。

  1. 指令寄存器IR,是用来存放当前正在执行的的一条指令,存放的内容来自于数据寄存器(DR,Data Register)。当一条指令需要被执行时,先要把它从内存取到数据寄存器,然后再送到指令寄存器IR中。
  2. 指令译码器ID,在计算机执行一条指定的指令时,必须首先分析这条指令的操作码是什么,以决定操作的性质和方法,然后控制计算机的其他各部件协同完成指令表达的功能,这中间的分析工作就是指令译码器ID完成的。
  3. 程序计数器PC,用来存放下一条要执行指令的地址,它与存储器(内存)之间有一条直接通路。执行指令时,首先需要根据程序计数器PC中存放的指令地址,将指令由内存取到指令寄存器IR,完成“取指令”的操作。程序计数器PC本身具有自动加1的功能,可以自动给出下一条指令的地址,如此循环,执行每一条指令。
  4. 时序产生器,类似于“时间作息表”,给计算机各部分提供工作所需的时间标志,一般是利用定时脉冲的顺序和不同的脉冲间隔来实现。
  5. 操作控制器,根据指令所需完成的操作和信号,发出各种微操作命令序列,用以控制所有被控对象,完成指令的执行。

        控制器工作原理是①按照程序计数器所指出的指令地址,从内存中取出一条指令到指令寄存器IR;②指令译码器ID对指令进行分析;③操作控制器根据指令的功能向有关部件发出控制命令,执行控制指令的操作。完成操作之后,程序计数器加1,再重复执行上述操作。

计算机基础之CPU架构_第5张图片 控制器执行指令的逻辑顺序

运算器

运算器,一般最少包括3个寄存器和1个算术逻辑单元(ALU),现代计算机内部往往设有通用寄存器组。

寄存器,一种有限存储容量的高速存储部件,可用来暂存指令、数据和位址。寄存器有很多种类,一般涉及到四则运算的有3类,ACC(Accumulator)为累加器,MQ(Multiplier-Quotient Register)为乘商寄存器,X为操作数寄存器,3类寄存器在完成不同运算时,所存放的操作数类别也各不相同。

计算机基础之CPU架构_第6张图片

关于乘积高位乘积低位的概念,以十进制为例,百位就是十位的高位,十位是百位的低位。两个16位数相乘,结果可能会有32位,那左半部分的16位就是乘积高位,存储到ACC中,右半部分的16位就是乘积低位,存储到MQ中。
算术逻辑单元(ALU,Arithmetic and Logic Unit),是算术运算和逻辑运算的部件。算术运算包括加、减、乘的整数运算,逻辑运算是与、或、非和异或等逻辑操作,还有移位、比较和传送等操作。
移位运算,将一个字符向左或向右移动位,或是浮动特定位,包含带符号延伸和无符号延伸,在程序中应用很广泛。

寄存器

计算机基础之CPU架构_第7张图片

通用寄存器

  • AX--Accumulator累加器。                                                                                                  

       算术运算的主要寄存器,用于存放操作数或运算结果。对外设操作的指令都使用AX存放数据。用累加器进行的操作可能需要更少时间。累加器可用于乘、除、输入/输出等操作,使用频率很高。

  • BX--Base Register基地址寄存器。                                                                                 

        用于存放操作数的偏移地址。可作为存储器指针使用。

  • CX--Count Register计数寄存器。                                                                                           

        用于循环指令、移位指令及串操作指令的技术控制。在循环和字符串操作时,用来控制循环次数;在位操作中,当移多位时,用CL来指明移位的位数。

  •  DX--Data Register数据寄存器。                                                                                           

        在乘法运算中,与AX累加器组合在一起存放双字型数据。在对外设操作的指令中,DX数据寄存器还用于存放外设端口地址。

  • SI--Source Index源变址寄存器。                                                                                           

        在串操作指令中用于存放源操作数的偏移地址。

  • DI--Destination Index目的变址寄存器。                                                                                 

        在操作指令中用于存放目的操作数的偏移地址。

  • BP--Base Pointer栈基地址寄存器。                                                                                       

        用于存放堆栈中操作数的偏移地址。

  • SP--Stack Pointer栈顶指针。                                                                                                 

        用于记载栈顶的当前位置(偏移地址)。

        上述8个为16位通用寄存器,可以存放1个字型(字节型x字节型=字型)、2个字节数据。其中,累加器AX、基地址寄存器BX、计数寄存器CX、数据寄存器DX,每一个可以拆分成高位部分和低位部分两个8位寄存器使用。

标志寄存器

  • FLAG/PSW--标志寄存器也称程序状态字(Program Status Word)。                                 

        共16位,主要用于存放当前程序智行的状况和运算结果的特征。

计算机基础之CPU架构_第8张图片
1、条件标志位
①CF---进位标志Carry Flag。
    记录加法运算的进位值,或者,减法运算的错位置。
②PF---奇偶标志Parity Flag。
    记录字节型运算结果中有奇数个1还是偶数个1。
③AF---辅助进位标志Auxiliary Flag。
    记录加/减法运算中后4位向前有无进/借位。
④ZF---零标志Zore Flag。
    记录运算结果是否位0。
⑤SF---符号标志Sign Flag。
    记录运算结果的正负情况。
⑥OF---溢出标志Overflow Flag。
    记录运算结果是否超出带符号数的表示范围。
2、控制标志位
①TF---陷阱标志/单步中断允许标志/跟踪标志Trap Flag。
    表示系统当前是否允许单步中断。
②IF---外中断屏蔽标志/中断标志Interrupt Flag。
    表示系统当前是否允许可屏蔽外中断。
③DF---方向标志Direction Flag。
   表示串操作按增量方向还是按减量方向进行。

段寄存器组

计算机基础之CPU架构_第9张图片
①DS---数据段段地址寄存器。
②ES---附加段段地址寄存器。
③SS---堆栈段段地址寄存器。
④CS---代码段段地址寄存器,或称指令段段地址寄存器。

指令指针

指令指针的代号是IP,是16位寄存器。专门用于存放下一条指令所在的偏移地址。与代码段段地址寄存器CS配合,以确定程序的下一条指令在内存的哪个字节。

你可能感兴趣的:(计算机基础网络与安全,java,开发语言,硬件架构,硬件工程,嵌入式硬件)