• “第四十九天” 机组


            各个硬件的工作原理

    主存储器包括:存储体、MAR、MDR;

    MAR:存储地址寄存器 ,MAR的位数反映存储单元的个数;

    MDR : 存储数据存储器,MDR位数等于存储字长;

    数据在存储体内按地址存储。

    存储单元:每个存储单元存放一串二进制代码;

    存储字:存储单元中二进制代码的组合;

    存储字长:存储单元中二进制代码的位数。

    存储元:存储二进制的电子元件,每个存储元可存 1 bit;

    这里要注意字和字节的区别,字节是存储单位 1Byte 是 8 bit ,而字代表的是存储单元中二进制代码的位数。

    还有一个就是 B 和 b 的区别 B代表的是字节 ,b 代表的是位,这里其实倒理解100Mbps和10MBps的不同。

    运算器的基本组成:ACC,MQ,ALU,X;

    运算器用于实现算术运算(加减乘除等)和逻辑运算(与或非等)。

    ACC:累加器,用于存放操作数,或运算结果;

    MQ:乘商寄存器,在乘、除运算时,用于存放操作数或者运算结果;

    X:通用的操作数寄存器,用于存放操作数;

    ALU:算术逻辑单元,通过内部复杂的电路实现算术运算、逻辑运算;

    这里前三个都是用来存储数据的,ALU才是处理数据的。

    控制器的基本组成:CU,IR,PC

    CU:控制单元,分析指令,给出控制信号;

    IR:指令寄存器,存放当前执行的指令;

    PC:程序计数器,存放下一条指令,有自动加一功能

    指令放在主存中的时包含操作码和地址码两部分;

    在工作过程中,会根据pc存储的指令的地址,在主存中找到对应的二进制指令,然后返回到 IR 中,IR 会将指令中的操作码送到CU,CU经分析后,会指挥其他部件进行执行指令,如“取数”指令,分析后,IR会将指令中的地址码传给MAR,然后MAR会根据地址找到对应的数据传到MDR,若进行加法运算,这个值会再传递ACC或者X(看这个值是被加数还是加数)。

    在这个过程中PC是在指令传送到IR之后进行加一的。

    这里其实也可以感觉到,对于高级语言的一串简单代码,实际上反映到计算机上还是比较复杂的,

    比如进行a*b+c将值赋给谁的话,计算机就要进行5次上面的操作(最后一步是停机,停机指令是利用中断机制通过操作系统终止该进程),只是在CU分析指令之后的操作有所差异,前四步都是取指令,然后第五步是分析指令,后面的执行的和指令的具体内容有关。这个用语言还蛮抽象的。

    CPU区分指令和数据的依据:指令周期的不同阶段

    程序的工作过程,初始时指令和数据存入主存,PC指向第一条指令,然后从主存中去指令放入IR、PC自动加一,CU分析指令,之后指挥其他部件执行指令。

    现在的计算机通常把MAR、MDR也集成在CPU内。

            计算机系统的多层次结构

    最底层的是 微程序机器 M0(微指令系统),就是上面的那个,由硬件直接执行微指令;

    然后是 传统机器 M1(用机器语言的机器),这个对应的是执行二进制机器指令;

    上面这两种属于硬件层次,下面的属于软件层次。

    虚拟机器 M2 (操作系统机器),向上提供“广义指令”(系统调用);

    虚拟机器 M3汇编语言机器),用汇编程序翻译成机器语言程序,汇编语言指令和机器语言指令一一对应;

    虚拟机器 M4(高级语言机器),用汇编程序翻译成汇编语言程序;

            三种级别的语言由高到低分别是 高级语言,也就是我们目前使用的 c,Java等,然后是汇编语言,是一些助记符,如 LOAD 5,MUL 6等,最下面是机器语言,也就是二进制代码。       

            高级语言的源程序(编译程序)可以通过编译器编译成汇编程序,然后经过汇编器变成机器语言程序,也可以通过编译器直接变成机器语言程序,或者通过解释器将源程序(解释程序)变成机器语言程序,如Javascript,python,shell等,但编译程序和解释程序还是有区别的。

    编译程序是将高级语言编写的源程序全部语言一次全部翻译成机器语言程序,而后在执行机器语言程序(只需要翻译一次);而解释程序则是将源程序的一条语句翻译成对应于机器语言的语句,并立即执行,紧接着再翻译下一句(每次执行都要翻译)。

            计算机性能指标

    存储器的性能指标

    总容量 = 存储单元个数 * 存储字长 (bit)=存储单元个数 * 存储字长 / 8 (Byte)

    MAR位数反映存储单元的个数(最多支持多少个),这里实际上在之前C语言中已经提到过,计算机通过地址管理内存,位数的多少决定了地址数目的多少;

    MAR位数等于存储字长,也就是每个存储单元的大小,实际上就是计算机用一个地址管理多大的地方,使用总容量等于存储单元个数乘以存储字长,前面是自己能管几块地,后面是一块地有多大,两者相乘就是自己管理地的总大小。

    cpu的性能指标:

    cpu主频:cpu内数字脉冲信号振荡的频率;

    梳子脉冲信号来回一次的时间称为cpu时钟周期;

    cpu主频(时钟频率)等于1/cpu时钟周期;

    CPI是执行一条指令所需的时钟周期数;不同的指令,CPI不同,甚至相同的指令,CPI也可能有变化。执行一条指令的时间等于CPI*CPU时钟周期

    cpu执行程序的时间 = 指令条数 * CPI / 主频;

    IPS:每秒执行多少指令 ,IPS=主频/平均CPI

    FLOPS:每秒执行多少次浮点运算;

            系统整体的性能指标:

    数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)

    吞吐量:指系统在单位时间内处理请求的数量,其取决于信息能多块地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存地存取周期。这段话云里雾里的。

    响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应,并获取它所需要的结果的等待时间。通常包括cpu的时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等时间)。

    这里需要说明的是主频高的cpu不一定比主频低的cpu快,因为处理指令的速度还和CPI有关(处理一条指令所需的时钟周期数),即使平均CPI相同,主频快的也不一定更快,还要看指令系统,如过前置不支持乘法指令,那就只能用多次加法实现乘法,而如果后者支持乘法指令,两者的快慢也未必。

  • 相关阅读:
    通信原理学习笔记6-2:数字解调——抽样和符号同步
    redis面试题
    Java多线程基础
    Sklearn基础教程
    『PyQt5-Qt Designer篇』| 13 Qt Designer中如何给工具添加菜单和工具栏?
    记不住java 面试题咋办哪?
    Ros2第一个节点程序调试(C++)
    数据处理技巧(7):MATLAB 读取数字字符串混杂的文本文件txt中的数据
    深度学习学习率的调整
    vnodeToString函数把vnode转为string(innerhtml)
  • 原文地址:https://blog.csdn.net/hh12137/article/details/134019391