冯诺依曼体系结构
冯诺依曼体系结构我们的计算机是由硬件构成的,但它们并非紊乱无序的,而是按照肯定的构造结构将所有的硬件划分在一起的。
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。
https://i-blog.csdnimg.cn/img_convert/016d558bf87fb046756073a83d6eee8d.png
我们的计算机都是按照图中这样的结构进行构造的。
这些硬件都是插在主板上,用各种系统总线IO总线连接起来构成计算机体系结构。
正常情况下我们的计算机肯定要要有输入装备如键盘和鼠标、话筒、摄像头、网卡、磁盘等;
输入装备有显示器、磁盘、网卡、打印机等。
这些都叫做外界装备
计算机的核心任务就是进行数据处理,所以要给它数据,也要能给出处理结果,所以就是必要输入和输出装备。
CPU一般是由两部分构成,其实如今的CPU已经非常复杂了,但我们如今将其简化点来说:
CPU=运算器+控制器
运算器主要是用来做计算的,算数运算与逻辑运算。要么判断结果要么判断真假。
控制器主要是帮我们控制CPU去取指令、分析指令、执行指令等。
CPU也叫做中央处理器
存储器到底是什么?
其实就是内存
那磁盘叫什么呢?外存。外部存储。
https://i-blog.csdnimg.cn/img_convert/cf322e89518d99d1fd786e4f310c17d3.png
输入装备、输出装备都是外设,CPU与存储器则是亲兄弟。
输入装备我们必要的是把外设的数据读到内存里,而输出装备必要我们把内存数据输入到外设中。
此中,磁盘和网卡比较特殊。网卡在以后学到网络再提,这里就只先说磁盘。
我们从前在C++学习中进行文件读取的时候,读文件就是把磁盘里的数据读到内存里。写文件就是把内存里的数据写到磁盘里。这种读写的动作,我们称为IO,Input/Output,所以像磁盘这样的装备大概不止是输入大概输出装备,大概既能输入也能输出。而我们如今在谈硬件,所以这个所谓IO是站在谁的角度的输入与输出呢?站在内存角度。
我们站在内存角度,输入装备把数据给我们就是I,我们把数据给输出装备就是O
(为什么学习冯诺依曼体系?是为了解答以下的疑问)
1.软件运行,必须先加载到内存?程序运行之前,在那里?
没有运行之前是在磁盘。
由于程序就是个文件。它就是一个编译好的在磁盘特定路径下的二进制文件。
为什么软件运行必须先加载到内存?为什么要从磁盘加载到内存呢?
https://i-blog.csdnimg.cn/img_convert/2232ddd8c26323c379deea6eed5f797d.png
如今我们先不去关注黑色的箭头也就是控制信号,先关心数据信号。
我们会发现,在计算机体系结构里数据的活动只能从输入装备流到内存,然后我们又看到,CPU读写数据(代码也是数据)只能从内存里。
https://i-blog.csdnimg.cn/img_convert/ca6911fd416f63f18231d09d0163d8b6.png
在数据层面,CPU获取、写入只能从内存中进行。
**而是谁在运行我们的软件呢?是CPU执行我们的代码,访问我们的数据。**所以CPU只认内存就必须将程序将外设加载到内存。
由于我们是站在内存的角度,所以我们说的加载,本质就是I,Input。
我们执行printf的时候其实也并没有直接将内容打印到输出装备上。而是把数据放到一个缓冲区里,必要的时候再把这个数据革新到外设。
数据从一个装备活动到另一个装备,说活动,其实是拷贝。
所以体系结构的服从由装备的“拷贝”服从决定。
CPU在数据(代码也是数据)层面,只和内存打交道;同样的,外设也只和内存打交道。
那么,为什么冯诺依曼体系要这样设计呢?
为什么计算机体系结构不能直接这样呢?
https://i-blog.csdnimg.cn/img_convert/56df8d8c190081260c6c91d9a0d4bb67.png
(存储分级)
https://i-blog.csdnimg.cn/img_convert/02d6d5ee0c1f319c3c5143ebac54dd51.png
我们计算机里有各种存储装备,最近的有寄存器,主存即内存,再来还有外存比如本地磁盘,再往后大概还有光盘云盘。
在整个计算机天下里,存储这件事如果离CPU越近,存储容量往往越小,但是更快、更贵。离CPU越远存储容量越大也越便宜但是服从低。
所以输入输出装备属于外设,输入输出服从低,假设它们的运算服从都是毫秒级别,cpu的运算速度是纳秒级别的,1s=1000ms,1ms=1000μs,1μs=1000ns。所以毫秒和纳秒级别差距很大,所以当我们cpu快速处理完后交给输出装备但是输出装备很慢就得等,大概cpu已经处理完了但是下一批要处理的数据还没加载过来。
所以如果没有内存而是直接外设和cpu打交道,整个体系的服从就按照外设的服从来界说了。这是木桶原理。
如果要直接用寄存器来构建外设,那就成本非常高。所以为了能均衡成本和服从,就引入了内存。内存服从也可以以为是微秒(大概其实是纳秒)级别的。
有了内存的存在,将来我们的输入装备的数据就可以提前放到内存里,怎么提前由操作系统决定。
内存(存储器)就可以对外设和CPU的速度做肯定的适配,这样就可以以较低的成本获得一台服从不错的计算机。
当代计算机是性价比的产物。
芯片技能+摩尔定律(如今有点失效了),随着期间发展计算机就越来越便宜,服从也越来越高。
厥后随着期间发展有了操作系统这种东西,操作系统在内存里,加载的时候就在内存里,它用算法可以将外设中的数据提前搬到内存里,就可以让CPU直接去读了。(局部性原理?内存发挥最大效果)
明白数据活动
一对朋侪,一个在北京一个在南京,网络谈天,北京的这人发送的字符串是如何显示到朋侪的显示器上的?
(网络部分先淡化明白)
本质是两台冯诺依曼体系在进行谈天
登录谈天软件比如QQ的本质是启动一个软件,本质是将其可执行程序加载到内存了。
我们双击的过程就是加载。
https://i-blog.csdnimg.cn/img_convert/3f4b7c68962df1b3604175d2a3ca2cf4.png
如今QQ就在内存里,所以我们通过输入装备也就是键盘将我们的数据交给内存的QQ。数据就从哪输入装备活动到了存储器。
发送数据一方面我们要加密包管数据安全等,
把“你好”交给运算器转化成比如乱码的加密结构,写回内存,再通过QQ将数据打到自己体系结构的输出装备,在这我们的输入装备就是网卡。
网卡未来就会把数据交到网络里,再由网络交给目的呆板。
目的呆板的输入装备拿到数据,它的输入装备只能是网卡。
然后朋侪也要将QQ启动起来加载到内存里,然后将数据从网卡到内存给QQ,交给运算器解密成“你好”,然后再把“你好”写到内存(存储器),再革新到输出装备也就是显示器。
这就是没有网络知识,纯站在冯诺依曼体系上对这个数据活动的明白。
所以我们的软件本质上都是在处理存储器和CPU之间的关系。我们写的算法、链表、增删查改,就是为了让我们的中央处理器去修改存储器内部相关的代码和数据。就是让它俩打交道。
当然在谈天时我们不仅能把信息发给对面还能在自己的显示器看到,这就是革新时不仅在网卡刷一份,在自己的显示器也刷一份。
那如果是发送文件,而不是谈天呢?
文件本质也是数据。
文件先在磁盘上,当我们拖拽文件时本质是将磁盘文件拷贝到QQ,也就是搬到内存里。然后再通过运算器进行加密封包等再写回存储器,再把文件数据革新到网卡。通过网络,对方网卡吸取,读到内存,再解包解密写回内存,还能帮我们打开对应的目的文件,然后把数据写到输出装备也就是对方的磁盘。所以这个文件就从我们的磁盘到对方的磁盘。
硬件是软件的骨架。
所以许多软件标题通过转化为冯诺依曼体系结构我们就能将其明白。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]