3.计算机组成与计算机体系结构从研究内容上的区别。 目录 一、简单的一个层次结构 二、把计算机系统划分为5个层次 三、计算机组成与计算机体系结构从研究内容上的区别 计算机系统是由硬件和软件两部分组成的。并且把软件部分进一步划分为系统软件和应用软件两部分。 实际上这种简单的划分,并不能直接体现出软件和硬件之间的这种逻辑关系。 可以用一个简单的层次结构来描述这种逻辑关系。 一、简单的一个层次结构
图片来自网络 下层是计算机系统的硬件。硬件被进行了相对的封装。它为软件提供了接口。 比如:提供了指令集。软件可以利用这些指令集编写能够完成一定功能的软件。 进而软件又分成了应用软件和系统软件。系统软件利用硬件提供的接口完成自己的功能。 比如:对系统当中的软硬件资源进行管理,给用户提供人机交互界面。 应用软件应用系统软件提供的接口,调用系统软件的功能,来实现自己的功能。 在这个层次当中,实际上,我们是对计算机系统进行了抽象。 把一个非常复杂的计算机系统用一个简单的层次结构来进行表述。通过封装,可以分层来实现一个复杂的计算机系统。 当然,在分层的过程当中,要处理好各层之间的接口。描述一下用于处理系统复杂性的一个方法,那就是抽象。 系统复杂性管理的方法: 抽象。 抽象:对于一个过程或者一件制品的某些细节有目的的隐藏,以便把其它方面、细节或者结构表达得更加清楚。—-百度百科。 抽象:指高级的模型,和低级的实体相对。—-维基百科。 抽象:隐藏系统中不重要的细节。—-David Harris 参考教材:数字逻辑设计与计算机体系结构。 可以看到,更高级的模型是指在抽象层次上更高、更少的考虑实体或者是系统的实现细节。 那么底层的实体系统,则更多得考虑了它的实现细节。一个系统,我们可以从不同的角度去进行抽象。 比如:从物理构成的角度把计算机系统抽象成9层。依据是:每层计算机它典型的构建模块,最底层是物理抽象。 电子设备依靠电子的移动来工作。可以利用量子机制和麦克斯韦方程来描述电子的移动。 系统的工作:是利用电子件来完成的。在电子件层,也就是device层。 利用电子在不同物质当中的移动特征来构建电子件。那么这些电子件体现出来的特征可以用连接点或者是广角。它的电流和电压的特征进行描述。 那么再上一层是模拟电路层,利用下层的接口进一步的构建放大器,滤波器等模拟电路部件。这些部件工作在连续的电压下。 计算机组成原理这门课主要研究的是逻辑层和微体系结构层。需掌握计算机中主要部件的逻辑实现和主要部件之间的连接,来实现data path和实现控制。 以上描述的是从计算机物理结构的角度对计算机系统进行抽象,抽象出来了9层。 二、把计算机系统划分为5个层次 下面以程序员的视角对计算机系统的层次结构再一次的进行抽象。 根据计算机系统的发展,最早出现的语言是机器语言。这个时候的机器是实际的硬件的机器。 编程人员利用机器提供的指令集,使用机器语言,也就是二进制代码,直接对硬件机器进行编程。 编写完毕的程序在计算机系统当中,在实际的硬件上直接进行执行。 机器语言是由01代码构成的。这样的代码很难编程,很难使用。在此基础上,人们又提出了利用汇编语言进行编程。 将机器语言符号化,不直接使用01代码。那么,编程的难度进一步降低。 实际上,实际的机器或者硬件的机器,并不能直接识别由汇编语言编写的程序。 汇编语言要在机器上正确的运行起来的话,那必须为这台机器提供汇编程序。 把汇编语言编写的程序转化成机器语言程序,再在实际的计算机上跑。 相当于在实际的这个硬件的机器上,外层又造了一层软件。这层软件完成了由汇编语言到机器语言的一个翻译。 但是汇编语言是符号语言和机器语言之间的对应关系,基本上是一一对应的。一条机器语言的指令,对应了一条汇编语言的指令。 编写起程序来,依然比较复杂。和人类的自然语言还有非常大的差距。后来,人们又提出了高级语言,利用高级语言进行编程。 高级语言编写的程序,要想在计算机上能够正确执行的话,必须为高级语言提供编译程序或者是解释程序。 由编译程序、解释程序生成可执行代码,在实际的机器上去执行。 相当于在汇编语言的机器上,外面又加了一层软件。这台机器在高级语言程序员的眼中似乎就直接可以执行高级语言了。 这是实际机器向上的发展,实际上,机器还在向下发展。 一条机器语言指令,执行过程也是很复杂的。比如要把这条机器语言的指令从存储器当中把它取出来。 要把这条指令的地址传送给存储器。要告诉存储器进行读,那么这条指令取出来以后,要送给控制器进行一码一码的结果,再控制,去操作数,再完成相应的操作。 所以,这个执行过程也是非常复杂的。而且这些操作之间是有先后关系的。有些操作可以同时进行,有些操作是有时序的。 必须等其它操作做完,或者是有些操作做完之后才能继续的去执行。这样的话,我们把一条机器指令,给它继续的进行细化。 在每个时间点上能够执行的那些操作。把它放到一个微指令当中,执行之间有先后顺序的那些操作,把它放到不同的微指令当中。 通过微指令的执行顺序来控制这些操作之间的先后顺序。这样的话,对于利用微指令编写微程序来实现机器语言指令的这些程序员来说,它所面对的指令就是一个微程序的机器。 这台机器能够执行微指令,能够执行微程序。进而实现对机器语言指令、机器语言程序的操作运行。 现在已经从程序员的角度把计算机分成4层。那么中间这部分还留了一个很大的这个空隙,这部分也是一层很大的机器,这层就是操作系统。
图片来自网络 汇编语言的程序员,可以利用操作系统提供的功能进行编程。操作系统可以管理软硬件的资源。 比如汇编语言程序设计,编写一个程序,最后在结束的时候,经常会用到2条指令。 2条指令完成了汇编语言应用程序的退出,返回了dos系统,实际上就是一个汇编语言程序调用了dos系统当中提供的中断功能,实现了从程序当中的退出。 把计算机系统划分为5个层次 从计算机的角度,从程序员的角度,可以把计算机系统划分为5个层次。
图片来自哈工大老师刘宏伟 这5个层次:底层的微程序机器m0是由硬件来直接执行微指令。微指令之间有一定的先后顺序。 多条微指令构成了一个微程序。一个微程序对应了一条机器指令。实际机器这一层,是用微指令来解释机器指令。 虚拟机m2,是用机器语言解释操作系统。再上一层,用汇编语言程序翻译成机器语言程序。 上一层,用汇编程序翻译成机器语言程序。这一层就是汇编语言程序员,它所面对的这台机器,用汇编程序完成这个翻译过程。 高级语言程序员面对的是高级语言程序。用编译程序把它翻译成汇编语言程序。逐层的往下送。 用编译程序把它翻译成汇编语言程序。才能完成一条指令的实现。进而完成一个程序的执行。 那么这个层次,有些是由硬件实现的,有些是通过软件的方式实现的。 把硬件和软件之间划上一条线。虚线的下边这些层,是真正的由硬件来实现的。虚线上面这些层是由软件来实现的。 虚线这一部分对应的是计算机系统的软硬件的接口。这个接口也完成了计算机系统的功能的分配。 有一些功能我们是通过底层的硬件来实现的,有一些功能是通过上层的软件来实现。 实际上,实现一个功能,用硬件来实现,还是由软件来实现,在逻辑上是等价的。 不过,如果用硬件来实现的话,会造成机器系统底层的硬件会比较复杂,造价比较高,设计周期比较长。 如果用软件来实现,那么这个软件系统可能比较庞大。因为如果用硬件来做,用1条指令就可以把它做完。 如果用软件实现的话,需要指令集当中多条指令的组合才能完成这个功能。那么这个软件就会大一点,运行得速度就会慢一点。
图片来自哈工大老师刘宏伟。这条线完成了计算机系统当中软硬件功能的划分,也提供了软硬件的接口。 三、计算机组成与计算机体系结构从研究内容上的区别 首先要清楚计算机组成和计算机系统结构或计算机体系结构,从研究内容上到底有什么区别。 计算机系统结构定义了计算机系统的软硬件的交界面。定义了哪些功能由软件来实现,哪些功能由硬件来实现。 提供了上层软件,进行编写的时候,那么和硬件进行交互的接口。 计算机体系结构:(有无乘法指令) 机器语言程序员所见到的计算机系统的属性概念性的结构与功能特性。(指令系统、数据类型、寻址技术、I/O机理) 机器语言程序员所见到的计算机系统的属性指的是:机器语言程序员要想编写一个能够在计算机硬件系统上正确执行的程序,他所必须了解的计算机系统的属性。 比如:指令集、寄存器文件的组织。内存的编制单位以及指令集能够对哪些类型的数据进行操作。 这些数据,在专业术语上,被称为“数据表示”。 计算机组成:(如何实现乘法指令) 是实现计算机体系结构所体现的属性(具体指令的实现)。 例如:在这个指令集当中有没有乘法指令,能够对什么类型的数据做乘法操作。数据的长度是多长。这些内容都是在体系结构当中做的规定。 计算机组成的设计者则利用上面的规定,来研究如何实现乘法指令,这个实现指的就是逻辑实现。 ps:本篇笔记由本人整理,视频来自哔哩哔哩网站中的哈工大的刘宏伟老师的《计算机组成原理》这门课,感谢他。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/44111.html