计算机组成原理第4版答案_计算机组成原理第四版电子书

计算机组成原理第4版答案_计算机组成原理第四版电子书计算机组成原理:如何执行指令(指令读取)(八)这是计算机组成原理系列文章的第8篇,欢迎持续!:游戏服务器开发上一篇罗罗的游戏:计算机组成原理:如何计算数据(实际应用)(七-3)总结回顾随着计算机组成原理旅程的逐渐深入,我们已经了解计算机组成的绝

计算机组成原理:如何执行指令(指令读取)(八)   这是计算机组成原理系列文章的第8篇,欢迎持续!
计算机组成原理第4版答案_计算机组成原理第四版电子书
计算机组成原理第4版答案_计算机组成原理第四版电子书   :游戏服务器开发   上一篇罗罗的游戏:计算机组成原理:如何计算数据(实际应用)(七-3)   总结回顾   随着计算机组成原理旅程的逐渐深入,我们已经了解计算机组成的绝大部分,为了熟悉记忆这一系列的知识,我们再来回顾一下各章的内容,把这些内容串联起来,对我们理解知识和加强整体的把握都很有帮助   首先,我们需要理解信息的表达和二进制的表示,这是最基础的理论   接着,我们结合理论知识,通过继电器制造各类最基础的逻辑门   最后,我们要记住计算机第一原则:输入数据-运算数据-输出数据   以上三点是底底底底层的知识,后面更高一层的器件,都是可以根据以上三点知识制造出来的。所有这些抽象的器件又再一次组合,从而形成计算机的各类部件,这就是计算机的组成第一,最最最底层的原理和理论,就是我们的信息如何表示,二进制如何表达,二进制如何与布尔代数结合,从而把我们对事物的数学建模与描述,转为具体的数字信息。例如,如何计算2个人相差多少岁?我们首先要用数字对2个人的年龄进行描述,A为20,B为30,这就是信息的表示,20和30是我们对事物的数学描述。然后再把20转为二进制10100,30转为二进制11110,这是把信息用二进制进行表达。然后利用计算机计算出相差10岁,这是利用布尔代数设计的电路计算的结果   第二,最最最底层的电路件,就是根据布尔代数与二进制,利用继电器而设计出来的各类门电路。可以说这些门电路,是信息表示,二进制表达,布尔代数这些理论知识在物理世界中的实现和表达。无论多高深,多正确的理论或者真理,最后一定要在工程中得到实践,它才有用。例如,牛顿定律也要在工程中实际制造汽车飞机火箭,它才算真正用到实处了   第三,最后根据最基础的逻辑门电路,设计出组成计算机的每个部件。根据计算机的第一原则,输入数据:我们可以根据基础的门电路设计出键盘,内存,磁盘等设备,用来提供数据给运算器使用。运算数据:根据二进制数据的特点,利用基础逻辑门电路,我们就可以制造运算设备,也就是CPU,再输入数据,就可以通过计算得到我们要的结果。输出数据:我们依然可以根据基础的门电路,把运算的结果输出。当然这个输出可以是数字,图像,音频等,输出的地方也可以是屏幕,存储器,麦克风等。这些结果的输出本质都是二进制信息   这就是计算机的组成,只做一件最简单的事情:输入数据-运算数据-输出数据。不要害怕实际编程过程中,或者项目中很多难的点,例如:内存,多线程编程,网络等问题。仔细分析,其实内存,就是在提高输入数据的效率,提前准备好数据在内存方便快速读取;多线程多核的本质就是如何合理安排分配CPU,就是如何提高运算数据的效率并且保证数据正确性;网络其实和输入数据,输出数据都有点关系,因为关涉到数据的接收和发送   自动执行   我们还有另一个重要的问题:我们制造计算机是为了让机器帮我们计算,帮我们工作。我们想要在使用计算机的时候,能够非常简单快捷地使用,甚至能做到,我们给个开始指令,计算机就能自动执行。否则每次使用计算机的时候,还要手工执行每个操作,那效率实在是太低了   其实我们想要的是,计算机如何自动地执行我们的指令,不用我们一步一步的操作。例如,计算1+2=3。我们只需要输入1和2,再按个执行,计算机就可以自动执行以下流程:把1和2分别转为二进制,并分别存进2个存储器。一按执行,计算机自动去内存读取1和2,并把二进制数据送到全加器,全加器自动化执行加法操作,执行完得到结果,再直接把结果存到第3个存储器,最后跳转到下一条指令继续执行   什么是指令   指令就是计算机能完成一系列操作的集合   举个例子:我们制作的全加器,它能进行加法计算,是因为我们把电路设计成这个特定功能的样子。那我们如何使用它?我们此时指定一条加法指令,也就是指定一个电信号,全加器收到这个电信号,就会自动工作,输出加法的结果   当然,我们要使用全加器,必须要提供2个加数,因此我们又可以把2个加数提前放到某一个位置,全加器固定到这个地方读取,这个地方就叫寄存器   寄存器的数据又是哪里来的?我们又设计一个指令,叫读取指令。读取指令会把某个内存地址的数据复制到寄存器。因此一般在加法指令前,会有一个读取指令,用来读取数据   全加器计算完结果后,会把结果存在另一个寄存器。此时我们又需要一条写入指令,把寄存器中的计算结果保存到内存   根据以上流程,我们大概知道为什么说程序就是指令+数据。指令是在CPU设计时候就已经确定好了,没办法更改,因为需要实现什么功能,都是在CPU电路提前设计好的。但计算机有很多种指令,大概几百条,我们通过组织这些指令的执行顺序,来实现不同的功能计算机的指令都能完成某一个特定的功能,是最最最底层的功能实现,通过组织这些底层指令的执行顺序,来完成我们的计算要求,是我们前面第二层抽象出来的键盘,存储器,全加器上的第三层抽象除了执行的操作,我们还需要提供具体的数据,这才使我们的计算具有意义。固定的指令(顺序不固定,数量不固定,类型不固定,每条指令的功能固定)+动态的数据,从而形成了所谓的程序。程序员写代码,本质就是组合使用计算机中几百条的指令顺序,并提供数据,从而实现各种不同的功能,仅此而已。可以说指令是微观的,但是有无数微观的指令,因为指令数量的多少,执行顺序的不同,和使用的数据不同,形成了我们看到的宏观上程序的百花齐放的功能   如何执行指令   写一下最简单的计算机执行的指令   输入数据1(键盘人工操作)存储指令,数据D1,地址A1(读取键盘输入,把数据1存储到内存地址A1)   输入数据2(键盘人工操作)存储数据,数据D2,地址A2(读取键盘输入,把数据2存储到内存地址A2)   读取指令,地址A1(读取内存数据,把内存地址A1的数据复制到寄存器R1)   读取指令,地址A2(读取内存数据,把内存地址A2的数据复制到寄存器R2)   加法指令,加数C1,加数C2(把寄存器B1,寄存器B2的值输入全加器,把结果输出到寄存器R3)   存储指令,数据D3,地址A3(把寄存器R3的数据复制到内存地址A3)   新的问题:那我们的指令又是怎么样存储的呢?指令又是如何一条接一条的执行?   其实指令和数据没有本质的区别,在计算机中都是二进制来表示,正如前面所说的,对于一串二进制数的含义,结果是看我们如何解析。例如:,它可以表示二进制数据,那它同样可以表示某一个指令。假如我们有100条不同的指令,那么我们就可以给这100条不同的指令进行编号,从而指令和数据都可以用二进制进行存储   注意:可以表示二进制数据,可以表示计算机指令,那同样可以表示某个地址!!   但是计算机会把指令和数据分开存放,以区分它们。隔离指令和数据,并且不同程序之间的内存也进行隔离,方便了电路实现和编程语言设计,以及提高程序安全性。这些其实就是计算机系统中说的内核态,用户态,进程空间这些高一层抽象知识的底层实现,所有的编程语言,计算机抽象的概念,在底层的计算机组成中来看,都是很简单直接的   另外,指令是二进制数据的话,也就一定占用内存。无数的指令存储在一个地方,地址都是相连的,例如:地址1,指令1;地址2,指令2;地址3,指令3…这样排列下去。   你可能疑惑:那又是什么指令来指导读取下一条指令呢?   关键的点就是时钟,时钟是自动的,就是我们计算机中说的CPU工作频率。举个例子:每当时钟响一次,我就去内存读一条指令执行,而且指令地址的序号是递增的,每读取一条指令,我记数+1,下次我就知道该去哪个地址读取下一条指令了。这个就是计算机中的程序计数器。CPU的工作频率非常重要,举个例子:假如1秒钟响一次的次数很多,那读取并执行指令的数量就会很多,程序很快就执行完了,因此我们都会CPU的主频,其实它提高的就是运算数据的效率   当计算机读取到指令时,会去分析指令,完成对应的操作,这些操作都是在设计CPU和指令系统的时候固定好的。所以我们可以写一个特殊的指令,让程序计数器跳回到某个地址,直接读取该地址的指令并执行,这就是实现了编程语言中循环,跳转,函数调用的底层实现,非常灵活和容易理解   注意:程序计数器中,每读取一条指令,计数器就+1,代表着指令内存地址+1,但不代表着2个指令相隔就是1。正如前面说的,1字节代表着1个地址,2个相邻字节的地址相隔是1,但是其实各自占有8字节。假如是32位的计算机,2个相邻指令的地址相隔是1,但其实各自占有8字节   最后再来分析一下指令和程序的关系   其实在计算机最底层的实现来看,所有的编程语言最后调用的都是那固定的几百条指令,计算机的CPU只认识那已经写死的几百条指令。编程的本质,就是安排这些指令的执行顺序,并提供准确的数据。提供数据又关涉到变量和地址,地址又关涉到指针等。函数的调用也无非就是指令的跳转,跳转之后再考虑数据的传递,也就有了堆栈的知识。指令+数据,形成了程序在计算机中的内存,为了管理和安全性,又有了进程,线程等概念。最后为了管理所有硬件软件资源,又产生一个超级程序,即计算机系统来管理所有资源,而计算机系统为了效率,管理与安全,又产生系统态和用户态等概念,隔离开程序之间的运行环境,又产生进程间通信与内存共享等的问题   如果这篇文章对你有帮助,就点个赞,反正你们收藏了也不看的   上一篇罗罗的游戏:计算机组成原理:如何计算数据(实际应用)(七-3)   下一篇罗罗的游戏:计算机组成原理:如何输出数据(屏幕显示)(九)   :游戏服务器开发

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/51174.html

(0)
上一篇 2024年 9月 3日 上午7:16
下一篇 2024年 9月 3日 上午7:20

相关推荐

关注微信