【计算机组成原理】1.2.4 计算机系统的层次结构​

1.2.4 计算机系统的层次结构

00:00

好的,这个小节中我们要学习的是计算机系统的多级层次结构。之前的小节中我们学过这样的一个内容,我们用高级语言编写的代码,最终需要翻译成机器语言才能被我们的CPU执行。所以我们传统意义上的机器,它只能识别机器语言。

00:22

机器语言就是用二进制来表述的这种指令。CPU在执行这些用二进制表示的机器指令的时候,还需要把这些机器指令细分为更细的一些小步骤来执行。我们把这些更细分的小步骤把它称为微指令,或者也可以称为微操作。对于之前这个例子来说,第一条机器指令也就是这个取数的指令,需要被划分为九个更细分的步骤,也就是九个微指令来依次的执行,才能完成取数这个操作。我们可以把这儿的微程序机器看作是对上层这个传统机器,对实际机器的一个分解,也就是用这个微程序机器的微指令来解释并且执行M1这个传统机器的每一条机器指令。好,这是计算机系统最底部的两个层次结构。

01:23

由于传统的机器只能识别这种0101的二进制指令,而这种二进制指令用来编程是很不方便的。所以在20世纪50年代开始出现了符号式的程序设计语言,也就是汇编语言。对于使用汇编语言的程序员来说,他所看到的机器似乎是可以直接识别它所编写的汇编语言程序的,所以使用汇编语言的程序员所看到的机器,我们把它称为虚拟机器。那之所以叫虚拟,是因为其实任何一台机器都不可能直接的识别汇编语言。那汇编语言编写的程序想要执行,必须通过汇编程序的翻译,把它翻译为等价的机器语言指令才可以执行。因此用汇编语言编程的程序员,在他看来这台机器好像可以直接识别汇编语言,但这个只是看起来像是而已,实际上还是需要通过翻译的操作。因此我们才说这是一个虚拟的机器,只是看起来像这样而已。

02:32

对了,可能有跨考的同学没有学过汇编语言,那我这儿故意用红色和黄色的这两种字体来分别标记了汇编语言和机器语言,其实每一条汇编语言指令和机器语言的指令都是一一对应的。

02:49

如果结合之前我们给出的例子,第一条机器语言指令,它的操作码是指明了这是一个取数的一个指令,然后地址码是指向了5号单元,因为这个二进制翻译成十进制就是5,所以你会看到这儿我们给出的汇编语言代码,这儿load其实就是说明了这是一个取数的操作,然后这个参数5是指明了我要从内存地址为5的那个地方来取数,和下边这个机器指令的两个部分都是一一对应的,那第二条乘法指令也是一样,前边红色部分是指明了我是要进行一个乘法的操作,那要和谁乘呢?要和存在内存地址为6的那个数据进行相乘。

03:39

所以其实使用汇编语言来编写的这个程序,只是更便于我们人类理解而已,但本质上它和机器语言的这种指令并没有太大的区别,依然是属于低级的语言。好,所以用这种汇编语言来编程显然也是不方便的那随着计算机的发展,慢慢的出现了很多高级语言,我们现在编程大多都使用的是高级语言,比如说像c、java pythons之类的这些语言。那么在我们这些高级语言程序员的视角看来,似乎我们所使用的这个机器,它就是可以直接识别高级语言的,但其实并没有任何一台机器可以直接执行高级语言写的代码。所以从我们的视角看到的这一台可以识别高级语言的机器,我们同样把它称为虚拟的机器,只是看起来就好像他能够懂高级语言一样。

04:35

但事实上我们用高级语言编写的那些代码,需要经过编译程序的翻译,先把它翻译成汇编语言描述的这种程序,然后再经过汇编语言程序翻译,才可以得到最终可以丢给机器执行的机器语言程序。另一个方面,我们所编写的这些程序难免会用到操作系统所提供的一些服务,比如说某一些系统调用。所以其实一般来说,用汇编语言编写的程序同样也需要请求操作系统的服务,通过系统调用的方式来请求,系统调用又可以称为广义指令。

05:17

因此我们把这个层次结构完善一下,我们应该在汇编语言机器的下方再插入一个操作系统机器。操作系统和操作系统之上的这些部分就属于软件的部分,而传统机器和下边这个微指令系统就属于硬件的部分。显然我们这门课重点要关注的是下面这两层。对于这个层次结构的模型来说,每一个下层都是上层的基础,而每一个上层又是对下层的一个拓展。好,这就是计算机系统的层次结构。

05:54

大家会发现计算机系统的层次结构这个问题,其实在我们操作系统课里也会聊到,只不过在操作系统那门课里,层次的划分和这儿的划分不一样,不管哪种划分都是对的,只不过我们选取的视角不一样而已。像这个地方给出的层次结构,我们更多的是从编程人员还有硬件设计人员的视角来进行的划分。

06:19

好的,这个小节当中我们介绍了计算机系统的五层结构。越高层的机器看起来似乎就可以识别越高级的代码,但事实上每一种代码的执行,最终肯定都是需要把它翻译成机器语言的那从层次结构的视角来看,我们这门课重点要探讨的是下面这两层的机器应该怎么实现。这是我们计算机组成原理这门课要研究的内容。

06:49

还有一门课课和计算机组成原理息息相关,也是很多同学比较容易混淆的一门课,叫做计算机体系结构。这门课和计组的关系是体系结构这门课,他探讨的是机器语言程序员所能看到的计算机系统的属性,概念性的结构与功能特性,这句话读不懂,举个大家能懂的例子,计算机体系结构这门课必须要探讨的是指令系统应该怎么设计。也就是说我设计的这台计算机要对上层的机器语言程序员提供哪一些指令,比如有没有乘法指令呢?如果我不给他提供乘法指令的话,那使用这台机器的程序员想要实现乘法,是不是就只能通过多次的加法来实现了?而计算机组成原理这门课要探讨的是,如果我要给上层提供乘法指令的话,那这个乘法指令我应该如何用硬件来实现。

07:52

也就是说体系结构这门课,它探讨的是我们如何设计硬件和软件之间的接口。而组成这门课要探讨的是怎么用硬件来实现我们定义的这些接口。那这些接口,这些指令如何用硬件来实现,对于上层的程序员来说,其实是透明的,也就是不可见的,那很多跨考的同学对于我们计算机专业的所谓的透明会有一个误解。我们平时在说某市公开透明的时候,想要表达的意思是说这个事情是看得见的,大家都看得见的。但是我们计算机专业里说某一个东西它是透明的,指的是这个东西我们看不见。

08:37

不知道有没有同学看海贼王这个动漫,里边有一个透明果实能力者,这哥们儿他可以让自己的身体变透明,那变透明之后其他人是不是就看不见了?好,所以以后我们在专业课里说某一个东西它是透明的那我们想表达的意思是说这个东西是我们看不见的。好的,以上就是这个小节的全部内容。

*文章整理自B站公开课程《王道计算机考研 计算机组成原理》
GZH:玄默冲虚
欢迎关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值