02计算机组成原理-计算机概述
大家好久不见,我又来了,以后会不定时更新计算机组成原理这门课的内容,大家喜欢的话可以点个关注。
1.计算机概述
1.1计算机的发展历史
1.1.1第一代计算机
我们公认的世界上第一台计算机是ENIAC计算机,这是用来军事使用的,这个时期的计算机是电子管计算机,因为是电子管计算机所以说做的比较庞大,一台电脑可能有一个房子那么大,但存储空间少得可怜,且运行时间久了,散热没处理好容易炸。最早这个计算机运行的时候程序和运算是分开的,你想要计算机干事就得给他下指令(程序),程序是放在外部电路里面的,所以当你想要计算机计算的时候需要人工去接电路,这个过程是很耗时的,等到接完之后,可能几分钟就算完了,这样问题就出现了,下达指令的时间太长了。所以冯诺依曼就提出了一个解决方案:存储程序。
"程序存储":指令以代码的形式事先输入到计算机的主存储器中,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。即按地址访问并顺序执行指令。
简单就是说把程序和计算结合,把一些指令存到计算机里面,存进去后就不用管它了,这样就不需要人类去干预了。
1.1.2第二代计算机
第二代计算机是晶体管计算机比起第一代要小很多,功耗低,计算效率也快很多。
1.1.3集成电路
把一些逻辑元件,存储器,电阻等各种东西集成到一个电路版上,这样计算效率更快很了。
1.1.4超大规模集成电路
在1.1.3的基础上使用较大规模的集成。
1.2计算机的组成
计算机之所以叫计算机,灵魂之处就在于能够计算,那什么来控制它的计算呢?那就是CPU。
CPU(Central Processing Unit,中央处理器)是计算机系统的核心运算与控制单元,相当于设备的 "大脑",负责执行指令、处理数据并协调硬件运作,其性能直接决定整机运算能力。
CPU不是一个整体,里面还可以再分,主题有两大部分,其中一个部分是CU(控制器)根据指令去控制哪个部件做什么,有了控制器之后--有"人"告诉你要去做什么,很明显还需要一个去干这个"活"的"人"--专门用于运算的即ALU(运算器),运算器计算的数据又从哪里来呢,算出的结果又存放到哪里呢?这都是问题,所以CPU上还有一堆寄存器,不同的寄存器存的东西不一样,有的只存地址,有的只存数据,有的存数据运算出来得结果。

有了上面的基础讲解,那我们再来看,我们现代计算机是存储程序思想,重点在于存储,光有这些用于计算用于控制得,没人告诉你怎么干,指令没有地方存储也不行,所以我们还需要存储器 ,不同类型的存储器由于材料的不同执行的速率也不一样,一般来说CPU由于是接电路的,它的时间是比较快的,存储器的运行时间是比较慢的,那为了让存储器和CPU的时间可以匹配上,所以存储器是分级的,其中最快的是cache高速缓存 ,而cache一般会集成在CPU上,cache还可以分,比如一级cache,二级cache,越靠近 CPU 的存储,速度越快、容量越小。。存储器我们分为内存和外存,内存的容量会小一些,内存在断电状态电脑是不存东西的,程序和数据会预先存放在外存(硬盘、固态硬盘)中,开机后操作系统会把需要运行的程序指令和数据,从外存加载到内存里 ------ 因为内存的读写速度远快于外存,能满足 CPU 的访存需求。然后CPU运行的时候找数据先去内存里找,找不到再去外存找(先这样理解)。

现在这样的计算机还是不能直接用,因为这是给机器看的不是给人看的,所以还需要输入输出设备 。
输入设备一般有:键盘鼠标。
输出设备一般有:显示器,打印机

有了这些东西还是不够,还少线,键盘上敲的东西怎么放到存储器里呢,,存储器里的东西怎么送到缓存里去呢?所以还得需要一套总线 。注意下图的线没有画完,只是一个大概。

这样上图基本就是计算机的最主要的部件了,可能还需要一些其他硬件,比如说散热的。

总结一下,计算机的组成核心硬件模块:输入输出设备 ,存储器 ,CPU ,总线
当然除了讲上述这些知识点,计算机最终的运算还是下需要指令的,所以还会讲一下指令,而指令是控制数据来运算的,所以还会讲一下数据及运算。
所以最后这门课我们会讲:输入输出设备 ,存储器 ,CPU ,总线
,指令 ,数据及运算。
1.3计算机的分类
个人计算机(PC):个人计算机应该是我们最常见、最常用的一种应用方式.就是现在此时此刻你正在看的这个小电脑(用手机看的除外).那么个人计算机,强调的就是对于单个的用户提供服务,要有一个良好的性能,要有一个低廉的价格,在个人计算机上通常运行的都是第三方软件.比如QQ微信网易云。
服务器:服务器,其实就是一个大型计算机.虽然我们常用的是云服务器,但是他背后的本质就是一个大型的硬件设备,我们用户借助网络去访问这个服务器.服务器的应用范围就非常广泛了.服务器更适用于执行高负载的任务,或者单个的复杂应用(比如科研或者工程),也可以是数量很多的简单的作业,比如我们常见的web服务器.一般来说,面对不同的服务需求,服务器要进行特别的修改.就比如我们租个云服务器,还要选各种配置呢.
服务器具有更强的计算能力,但是从制造技术来说,其实跟计算机差不多.只是相对而言能力更强,但是,一旦出了故障,后果也会更加严重.而且如果要做回滚或者恢复的操作,服务器也会更加的麻烦.所以相对于个人计算机来说,服务器首先强调的不是性能和价格,而是稳定,可靠.我们打游戏也好,使用软件也好,要求的都是服务器要稳定.不然,一卡一卡的,那多难受呀.
最高端最高端的服务器,就是我们经常听说的超级计算机。说简单点,超级计算机其实就是一堆处理器放到一起组成起来.但是也不是单纯的拼装。超级计算机是服务器领域中最为强大和复杂的例子,它们由成千上万个处理器核心组成,并通过高效的并行计算架构和专门定制的互联网络进行协同工作。超级计算机的设计不仅仅在于堆砌硬件,还包括了软件层面的高度优化,如并行算法开发、大规模数据管理、能耗控制等复杂技术问题。
服务器是有更强的计算能力,那超级计算机就是更更更强的计算能力.用于超大型的工程,比如石油勘探、天气、生物蛋白质结构等等大规模以及超大规模问题的计算.当然,这种计算能力对于大部分的个人用户没什么用,如果是做到高精尖科研领域才能接触的到.
嵌入式计算机:我们日常生活中最常见,最常用到的东西就是嵌入式计算机.他的范围十分广泛,各种车机系统,我们看到的电视机,无人机,扫地机器人,各类机床控制系统等等都属于嵌入式计算机.就好像我们的个人电脑需要CPU来运行计算.其实我们日常生活中接触的很多东西也都需要一个小小的芯片嵌入到这些机器里面才能运行.只是对于大部分来说可能没有意识到其实我们无时无刻不在使用各类计算机.
所谓嵌入式,其实就是把一个小芯片,带着一些小程序,嵌入到其他设备里面进行计算,都叫做嵌入式计算机.
嵌入式一般对于成本会有要求,所以一般不会像电脑CPU这么强大.一般都是只用于某一种特定的功能.比如一个音响,它里面的小芯片只需要管音乐播放相关的一些功能.所以,如何降低成本和功耗就成为了嵌入式工程师需要面对和考虑的一个难题.你要是成本很高,就一个播放器,能卖多少钱,你那么高的成本,商家受不了.你功耗太高,就一个播放器,你能煮鸡蛋了,那也受不了.
又因为他大部分是在处理一些单一的功能,而这个单一的功能一旦出现故障可能造成很大的问题.比如音乐播放器.一旦故障,用户就会很难受.又比如车载系统,一旦出现故障,就boom~~~新闻太多了就不阐述了.所以,对于嵌入式工程师来说,可靠性也是一个需要我们去考虑的问题.我们要尽可能的保障嵌入式设备不会出现问题.最简单的方法就是,设计尽可能简单.所以这也是为什么功能一般比较单一.
当然,现在也有一些大型嵌入式设备,加入很多很多功能,甚至是比较冗余的一些技术,这个就仁者见仁智者见智了.
个人移动设备(PMD):PMD,如智能手机和平板电脑,与传统的个人计算机(PC)相比,有着显著的优势。它们不再依赖于固定的电源供电,而是通过可充电电池提供电力,这使得用户可以随时随地使用这些设备,不再受限于电源插座的位置。此外,PMD通过无线网络进行连接,无需复杂的物理连接线,进一步增强了其便携性和灵活性。
PMD的另一个重要特点是其软件生态系统的丰富性。用户可以轻松地从应用商店下载各种应用程序(App),这些App涵盖了各种功能和服务,从社交娱乐到工作学习,无所不包。这使得PMD不仅仅是通信工具,更是成为了综合性的个人信息处理中心。
PMD的输入方式也进行了革命性的变革。与传统的PC需要鼠标和键盘进行操作不同,PMD主要通过触摸屏进行操作,这使得用户可以更加直观、便捷地进行交互。
我们可以预见PMD将继续发展并拓展其应用领域。例如,未来的PMD可能会包括更加先进的可穿戴设备,如智能眼镜等,这些设备将进一步提升用户的便利性和效率。同时,随着技术的不断进步,PMD的计算能力和性能也将得到进一步提升,使得更多的复杂任务可以在这些设备上完成。会不会有一天一些超大型功能也集成于一台小型PMD上面呢?
云计算:云计算正在逐渐替代传统的服务器模式,它通过仓储级别计算机(WSC)和数据中心,实现了软件即服务(SaaS)的概念。这一变革对于软件工业来说是一个革命性的进步。
随着云计算的普及,企业不再需要自行建立和维护昂贵的数据中心。通过租用云服务,企业可以轻松地获得一个功能强大的大型数据中心,从而专注于自身的核心业务。这种转变不仅降低了企业的硬件成本,还简化了IT管理。
在云计算的推动下,PMD(个人移动设备)和云端应用成为了软件开发者的重要工具。开发者可以在PMD上编写和测试应用,然后将其部署到云端,供用户访问和使用。这种开发模式不仅提高了开发效率,还使得应用更加易于推广和使用。
对于普通用户来说,云计算的普及意味着他们可以通过PMD随时随地访问各种云服务,如在线办公、社交娱乐、数据存储等。这使得我们的生活更加便捷和高效。
然而,随着云计算的普及,也带来了一些新的挑战,如数据安全、隐私保护等问题。因此,在享受云计算带来的便利的同时,我们也需要关注这些挑战,并采取相应的措施来保护我们的数据和隐私。
1.4计算机设计思想
以下这8个思想会贯穿我们计算机组成原理的学习,例如为什么要这么设计呢,可能就会用到一下八大思想中的一个:
1.面向摩尔定律的设计:指出一个芯片上集成的晶体管数量每18到24个月就会翻一番。(目前已废除)
2.使用抽象简化设计:使用抽象用来表示不同的设计层次,高层次的看不见低层次的细节,只能看见一个简化的模型。
3.加速大概率事件:是优先关注那些对系统性能影响最大的操作或组件,并对其进行优化。通过集中资源和精力在这些关键点上,我们可以更有效地提升系统的整体性能和效率。例如把经常访问的数据调入到缓存中,这样就减少了对慢速设备的访问。
4.通过并行来提高性能:"同时"做多件事,但其实对于单核计算机看似并行实则是并发,只是在一个时间段内"同时"做多件事,要想完成真正的并行可以通过加处理器来完成,这里就不过多赘述,后面会细讲。
5.通过流水线来提高性能 :流水线(Pipeline)是一种经典的并行处理技术,它将一个复杂的计算任务拆
分成多个连续且相对独立的阶段,并让这些阶段像工厂流水线一样依次执行。
6.通过预测来提高性能:预测技术通过预测未来的指令或数据,提前进行预取和预处理,从而减少等待时间和提高处理速度。
7.存储器层次结构:旨在解决不同存储器设备在速度、容量和价格之间的矛盾。这种层次结构通过将不同类型的存储器按照其特性和成本效益组织成多个层次,从而实现了高效的数据访问和管理。
8.通过冗余提高可靠性:是通过增加额外的硬件组件来提高系统的可靠性和容错能力。
大概先写这些吧,今天的博客就先写到这,谢谢您的观看。