微机原理知识梳理

微型计算机

理解微型计算机的工作原理才能更好的理解计算机、芯片、单片机等等的工作机理。本文从微机原理出发,整理相关知识并梳理,加深对计算机的理解。

基础电路

计算机由集成电路构成,可以说计算机是跑在芯片上的,芯片包括CPU芯片例如Intel生产的芯片,以及外设更多的单片机芯片如ARM等,后者是将CPU和一些存储器和外设集成在一个芯片上。所有的芯片均是由基本的门电路构成的,而门电路可以由硅单质掺杂形成的二极管和三级管构成,因此芯片通电后才能实现电平逻辑的变化。

上面大概梳理了一下不同器件的组成关系,可以看出芯片最终是由无数个门电路和相连的导线构成的,这也是为什么今天的芯片设计相关的视频介绍中往往以P型或N型半导体的构造为起点,由PN结构成的二极管和三极管组成的门电路是这个庞大工程的起点。

逻辑电路

逻辑电路是集成电路的最小单元,由3种基本门电路组成,

  • 门电路
    • 基本门电路
      • 非门:$Y = \overline A \(,或门:\)Y=A+B\(,与门:\)Y=AB$
    • 复杂逻辑电路(自行查找)
      • 或非门,与非门,异或门,异或非门,异或同门,缓冲器(\(Y=A\),阻值变小)
  • 门电路在芯片中的实现:
    • 由硅单质经掺杂腐蚀等工艺形成P型半导体N型半导体,两者相连部分叫PN结,PN结在正向电流时可导通,反向电流时阻断,具备单向导电性。在PN结上加入导线和封装,则构成一个二极管,由两个PN结构成一个三极管
    • 由于二极管的单向导电性,可以构成门电路(以与门为例):

基本运算与加法电路

  • 半加器
    • 两个二进制数(A和B)相加,最低位会产生两个结果,分别是和(S)和进位(C),能够实现一个二进制位加法运算的电路即半加器,半加器可以这样设计门电路(根据A、B相加后的运算结果):\(S=A \oplus B\),\(C=AB\)
  • 全加器
    • 将A、B、C一同运算产生S和新的进位C称之为全加器,全加器和半加器统称加法器,全加器相互串联即构成了二进制数的加法运算,常见的8位、16位、32位、64位为CPU的寄存器位数,不要混淆为加法器的个数(也和总线位数有关)。
    • 现在一个CPU中含有的加法器个数非常巨大。
  • 基本运算的实现(二进制):
    • 减法:由加法计算A和B的补码即为减法
    • 乘除法:由移位实现

基本组成电路

算数逻辑单元ALU

可进行加减法运算和逻辑运算的单元,计算机程序可以认为是程序和数据的组合,ALU即负责执行程序运算逻辑

触发器

  • RS触发器,S指置位,R指复位,RS触发器可接一个时钟CLK用于运算同步,由于RS同时为低时会使输出无法确定,因此引入D触发器
  • D触发器,D端为高,表现为S置位,D端为低表现为R复位,CLK在边沿变化时执行D触发器动作可以做到动作一致
  • JK触发器是RS触发器的改进,相比RS触发器,在RS(JK)端同时为高时Q表现为反码,同时为低时Q表现为锁定,JK触发器可用用在计数器中。
  • JK触发器在JK均为低时

    寄存器

  • 一个触发器即一位寄存器,可知32位寄存器至少含有32个触发器
  • 寄存器包括累加器,缓存器,计数器,可以知道用于缓存数据的寄存器由多个触发器连接而成,而每个触发器又是由多个门电路构成。

总线结构

  • 三态输出电路:为了能够使用一组数据线(数据线条数取决于寄存器位数)便可以使任意两个寄存器相连

    • E A B
      0 1 高阻
      0 0 高阻
      1 1 1
      1 0 0
      • E为控制,记L为装入门,L管理对寄存器装入数据,E管理由寄存器的输出。即在L打开时,寄存器可写入数据,而此时总线上的数据即被写入寄存器,当L关闭E打开时,总线上数据被寄存器更新。
  • 根据寄存器位数可以得到总线的位数,同时还需要总线控制字CON确定数据的流向(从A寄存器到B寄存器还是从B寄存器到A寄存器),每次控制字中只有两位为高,其余均为低。

存储器

  • 存储器可以认为是一大群寄存器构成的寄存器堆,根据使用的需要分为ROM和RAM,PROM可以认为是RAM和ROM的功能均支持。
  • 数据线个数决定了每个地址有多少位数据可以取,地址线的个数决定了可以访问多少个地址。

基本工作原理

一个简化的微型计算机

该计算机实现一个简单的功能,计算A和B的加减法后停止。

  • 虚线框内可以认为是计算机的CPU,MAR和PROM构成存储器,O和D构成外设,将这些电路集成到一个芯片即为单片机。

  • PROM为8位,16个单元,即16个字节

  • CON总线控制字共12位,PROM存8位的指令字,经IR通过总线W取出后取高4位为指令,低4位为地址

指令系统与程序设计

  • 假设支持5条指令,LDA:将数据送入累加器A,ADD:加法运算,SUB:减法运算,OUT输出,HLT停机
  • 将指令与二进制操作码对应起来:LDA:0000,ADD:0001,SUB:0010,OUT:1110,HLT:1111
  • 操作码的定义与xx有关

  • 程序设计:

    • 将PROM前8个字节给程序,后8个字节给数据,可知这个计算机只能执行8条指令以内的操作,操作的数据只有8个字节

    • 假设执行的操作为(R9表示PROM第9个字节,RA等以此类推):

    • LDA R9
      ADD RA
      ADD RB
      ADD RC
      SUB RD
      OUT
      HLT
    • 翻译为目的程序:

    • ;PROGRAM:16+20+24+28-32
      0000 1001
      0001 1010
      0001 1011
      0001 1100
      0010 1101
      1110 0000
      1111 0000
      0000 0000
      ;DATA
      0001 0000;16
      0001 0100;20
      0001 1000;24
      0001 1100;28
      0010 0000;32
      0000 0000
      0000 0000
      0000 0000
    • 注意,这里只是将汇编翻译为操作码

执行过程

假设环形计数器的位数是6位,则一个固定周期的CPU在可分为3个机器节拍的取指周期和3个节拍的执行周期,即一条指令的执行占用6个机器节拍,6个最小的时钟。不同的CPU在指令节拍个数上有所不同

  • 取指周期:
    • PC是程序计数器,这里计数范围为0-15,即0000-1111,上电复位时为0,PC被送入MAR时表示要取出的地址为0,即程序0000 1001,因此可以理解为程序从0地址开始执行。CON为011000000000
    • 从MAR取出的指令被送入IR,将高4位解析给CON,低4位解析为地址,CON为000110000000
    • PC加1,CON为100000000000
  • 执行周期:
    • 以LDA R9为例:LDA的操作码为0,设计逻辑门使CON送入0时执行以下动作:
      • \(E_I=1\)将IR低4位送入总线,\(L_M=1\),MAR将总线的地址数据送给PROM,CON变为001001000000
        • 将R9放入累加器A,CON变为000100100000
        • 空拍,保持指令执行时间固定,CON为000000000000

控制部件

以LDA R9为例,LDA的操作码被定义为0000,而将0000翻译为CON的控制字的逻辑实现则需要指令译码器。译码器将操作码翻译为指令动作,在控制部件中,一个指令动作相当于一条信号线,假设一个CPU支持100条指令,则相当于操作码需要8位,输出100条信号线,再将这100条信号线与CON字映射起来:

这个过程中,操作码首先经过译码器电路翻译出执行的指令动作信号线,指令动作与一组CON控制字对应(上面的例子中LDA对应了3条CON),控制矩阵电路将RC和指令动作组合成一系列总线控制字,实现程序执行。

计算机的功能取决于CPU部分,而CPU部分取决于控制器的功能

其他技术

  • 流水线技术:取指和执行可同时进行,采用流水线方式
  • CACHE:高速缓存,CPU在访问存储器前先通过CACHE进行访问,如果指令存在则直接取走,不存在则访问存储器,提高了CPU访问存储器的速度
  • 虚拟存储器:通过虚拟映射方式扩大可执行的范围,当程序大于RAM时可分批从存储器拷贝

猜你喜欢

转载自www.cnblogs.com/RegressionWorldLine/p/11748452.html