(王道21版)计算机组成原理--计算机系统的概述(第一章)




在计算机中传输信号本质上是传输电信号 用低电平和高电平分别表示0和1


1.1计算机的发展




计算机组成原理主要探讨计算机的硬件,下面我们主要来看一下计算机的硬件

计算机在进行逻辑运算的时候本质上是在处理电信号,所谓逻辑元件就是就是用来处理电信号的最小的逻辑单元





微处理器简单理解为cpu

  • 微处理器的发展



    编程语言是用来编写软件的,编程语言的发展在一定程度上反应了软件的发展
  • 操作系统的发展
  • 当前计算机的发展趋势

1.2-1计算机硬件的基本组成

早期的冯诺依曼结构



早期的ENIAC计算机需要程序员手动接线来控制运算--后面提出下面的思想

根据提出的储存器的思想设计出里下面的计算机

程序指令的解析由控制器来完成

  • 对早期的冯诺依曼结构的理解

    1.将输入设备和输出设备统称为I/O设备
  • 冯诺依曼计算机的特点

以运算器为中心的问题:我们的所有的计算是在运算器中进行的,而我们的运算器还要承但数据中转的功能,这势必会导致我们的运算器的效率很低
一个举例


不言而喻

  • 由此引出现代计算机的结构

    由于我们的运算器和控制器的逻辑运算很紧密,所以一般在大规模集成电路的计算计算,一般将这2个零件整合在一起

  • 现代计算机的结构

  • 简化后的计算机结构

    主存(主存储器)指的是内存,是主机的组成结构之一。辅存是指我们熟悉的固态硬盘,他数据外设(TO设备)。我们电脑里面的app的文件平常是储存在辅存中,只有当我们要运行的时候才会读到内存中

1.2.2认识各个硬件部件


主存储器

  • cpu从主存储器中取出数据和从菜鸟驿站中取出包裹的过程对比
    我们在取出包裹的时候会把取件码(地址)告诉店员,店员凭着取件码(地址)到货架(存储体)中进行寻找,将找到的获取放到柜台(储存数据寄存器)上,然后我们从柜台上取走数据

当cpu要取出数据会将数据的地址写入到存储地址寄存器中,然后会根据地址在存储体中寻找数据,然后将找到的数据放到存储数据寄存器中,然后cpu到存储数据寄存器中取出数据

写入数据的过程
cpu和指明他想要写入的位置,然后将数据放到存储数据寄存器中。然后cpu会通过控制总线告诉主存储器说现在要执行写操作。住存储器根据这3个指令就可以进行写操作了

存储体

通常每个存储单元可以放下的二进制位都是8bit的整数倍

每个存储单元对应一个地址信息



运算器的基本组成

ACC MQ X 的硬件构造并不复杂,主要用来寄存数据。ALU的实现比较复杂才是核心

控制器

CU(控制单元)中集成了很复杂的电路,可以给其他的部件发出控制信号

举例说明计算机的工作过程

计算机硬件处理下面代码的过程分析

每一条指令也是16个比特,在执行的时候cpu会将器拆分成操作码和地址码

  • 这里可以不考虑IO设备

PC:程序计数器,存放下一条指令的地址,有自动+1的功能
MAR:存储地址寄存器
IR:指令寄存器:存放当前执行的指令
CU:控制单元:分析指令,给出控制信号
Acc:累加器:用于存放操作数或运算的结果
MQ:乘商寄存器:在进行乘 除计算的时候,用来存放操作数或运行结果
X:通用寄存器:用来存放操作数
ALU:算术逻辑单元:通过复杂的逻辑电路显示算术运算和逻辑运算
首先我们指令和变量的数据都会先存放到存储体中
初:PC指向0
1.PC存放的内容首先通过地址总线把他传输到MAR中(控制器向主存储器指明了我将要访问的是0号地址锁所对应的数据)
同时控制器会通过控制总线告诉主存储器我们接下来要进行读操作
3.主存储器会根据地址到存储体中寻找0号地址所对应的二进制数据,并把二进制数据放到存储数据寄存器(MDR中)

4.导致IR存放了当前要执行的指令

5.IR中指令的操作码会被送到CU(控制单元)中,CPU分析之后知道这是一条取数的指令
接下来将进行取数的操作:
将地址码所表示的数据取出来并放到Acc中
6.将IR中的地址码放到MAR中,导致MAR=5
其地址码翻译成十进制就是5。主存储器根据地址到存储体中找到对应的数据,并放到MDR中

8.MDR=2
9.在控制单元的指挥下MDR中的数据会被传输到Acc()

到此为止我们就已经完成了取数的操作,导致a这个变量的值被我们放到了Acc中
Pc会自动+1,当我们完成取指令的操作(#1-#4)的时候PC将会自动+1

上一条指令PC自动+1,执行后(Acc)=2
取指令的过程和前面类似
5.分析指令:和我操作码送到CU,CU分析后得知这是乘法指令

6.指令的地址吗(会将地址码翻译成十进制数)从IR送到MAR中,导致MAR=6

  • 接下来进行取出数据
    8.主存储器将在存储体中找到的值放到MDR中,导致MDR=3

9 .b的值会通过数据总线送到MQ(乘商寄存器中存储)MQ=3

  • 下面进行乘法操作

10.把a的值放到通用寄存器X中X=2(进行乘法操作时会把被乘数放到通用寄存器X里面,会报乘数放到乘商寄存器MQ中)
然后CU会通过控制总线告诉算术逻辑单元(ALU)进行乘法运算。ALU会将X和MQ里面的值进行相乘,并把结果方法ACC里面


1-5步和前面的指令完全一致,到分析出是乘法指令后才不一样

  • 指令3
    上一条指令之后PC=2,执行后ACC=6

前面的5步完全一致,以致分析出这是加法指令...
加法指令指明的是c的地址,将其转换成十进制刚好是7

6.将指令的地址码送到MAR中,MAR=7

7.主储存器根据地址在存储器中寻找值
8.把找到的值放到MDR中
9.将MDR中的值传输到通用寄存器X当中(当进行加法运算时ACC中会存放被加数,而通用寄存器X中存放加数)

控制单元CU和向ALU发出一个信号,告诉他你此次要指向的是加法操作。ALU会将ACC和X中储存的值相加,并把相加得到的值再次储存到ACC当中,ACC=7
前面的5条指令和前面的一致

指令4
将地址码转换成十进制8

6.将指令的地址吗送到MAR,导致MAR=8

7.将ACC中的数据总线送到MDR中,MDR=a*b+c=7

此时的控制单元CU通过控制总线告诉主存储器,我要进行写入数据的操作

8.主存储器会根据MAR中的地址,把MDR中的数据存到存储体中相应的位置

9.8号存储单元的值变成了7,y=7

同样1-5和前面的没有什么不同

指令5

终止一个进程的运行需要系统的调用或中断机制,后续的步骤由操作系统完成,不需要我们关系


总结
取指令和分析指令的步骤都完全一致,根据指令周期的不同阶段,CPU可以区分指令和数据


MAR MDR中划分上是属于主存,但是现在的计算机中一般会将这2给部件集成的CPU中

回忆冯诺以曼计算机结构

1.2.3计算机系统的层次结构

二进制机器指令由微指令组成

我们的机器并不能直接执行高级语言,会先编译程序翻译成汇编语言,然后用汇编程序将汇编语言翻译成机器语言

一般用汇编语言写的程序难免会用到操作系统提供的一些服务 ,比如某些系统调用。系统调用又可以称为广义指令。所以在汇编层次下面还要


这是从编程人员的视角来划分的,在操作系统中划分有所不同,但是意思一样

汇编语言本质上是助记符

  • 高级语言的执行过程

解释程序:翻译一次,立即执行,然后接着翻译


除了上述步骤外,有些语言可以通过编译程序直接变成机器语言。还有一些语言不是通过编译程序而是通过解释程序,把高级语言代码翻译成机器语言代码



计算机性能指标

存储器的性能指标

  • n个二进制位能表示多少种状态

    熟练记得

CPU的性能指标


脉冲信号:指挥cpu内部各个部件工作的节奏

主频等于10HZ,表示每秒钟又10个脉冲信号

在微观的角度影响CPI的因素太多了,可以同一条指令不同时间执行的CPI都可能不同,所以一般讨论平均情况

  • 例题

注意:这里的 K M T的换算不是前面的1024,2KMIPS表示每秒执行2000条指令

总结:在描述存储器的容量 文件的大小 是的M K T 换算是1024 ,而在描述数据的处理速率 主频时换算是1000

系统整体性能的指标


如果数据通路贷款是8位,我们需要从存储器传输10个比特的数据到CPU里面,需要传输2次,这肯定比数据通路贷款位6位的慢

请求:可以理解为一个指令就是一个请求,也可以理解为一次完整的程序运行就是一个请求.淘宝中每秒可以出路多少个用户发来的http请求,这就是吞吐量

我们前面的描述计算机性能的指标都是静态指标,很难去描述;我们可以用动态的描述


G是指的10的9次方

CPU常考

posted @ 2023-03-07 16:47  一往而深,  阅读(262)  评论(0编辑  收藏  举报