网络位置可以看到另一个人的电脑_计算机组成原理(一)- 冯·诺依曼体系结构...

1 计算机的基本硬件组成

早期,DIY一台计算机,要先有三大件

  • CPU
  • 内存
  • 主板

1.1 CPU

计算机最重要的核心配件,中央处理器(Central Processing Unit)。

计算机的所有“计算”都是由CPU来进行的。

  • CPU是一个超级精细的印刷电路版
0f878e787cb5f01d2f193fd78047702e.png

1.2 内存(Memory)

你撰写的程序、打开的浏览器、运行的游戏,都要加载到内存里才能运行。

程序读取的数据、计算得到的结果,也都要放在内存里。内存越大,能加载的东西自然也就越多。

内存通常直接可以插在主板上,存放在内存里的程序和数据,需要被CPU读取,CPU计算完之后,还要把数据写回到内存。然而CPU不能直接插到内存上,反之亦然。于是,就带来了最后一个大件——主板(Motherboard)。

  • 内存通常直接可以插在主板上
d5bd814a121d5e51cf06ee0ec682c1c0.png

1.3 主板

主板是一个有着各种各样,有时候多达数十乃至上百个插槽的配件。

我们的CPU要插在主板上,内存也要插在主板上。

主板的芯片组(Chipset)和总线(Bus)解决了CPU和内存之间如何通信的问题。

  • 芯片组控制了数据传输的流转,也就是数据从哪里到哪里的问题
  • 总线则是实际数据传输的高速公路。总线速度(Bus Speed)决定了数据能传输得多快。
  • 计算机主板上通常有着各种各样的插槽
7c0ce69452b669ceaf2beafca674b6e3.png

有了三大件,只要配上电源供电,计算机差不多就可以跑起来了。

但是现在还缺少各类输入(Input)/输出(Output)设备,也就是我们常说的I/O设备

如果你用的是自己的个人电脑,那显示器肯定必不可少,只有有了显示器我们才能看到计算机输出的各种图像、文字,这也就是所谓的输出设备

同样的,鼠标和键盘也都是必不可少的配件。这样我才能输入文本,写下这篇文章。它们也就是所谓的输入设备

最后,你自己配的个人计算机,还要配上一个硬盘。这样各种数据才能持久地保存下来。

绝大部分人都会给自己的机器装上一个机箱,配上风扇,解决灰尘和散热的问题。

不过机箱和风扇,算不上是计算机的必备硬件,我们拿个纸板或者外面放个电风扇,也一样能用。

显示器、鼠标、键盘和硬盘这些东西并不是一台计算机必须的部分。

其实只需要有I/O设备,能让我们从计算机里输入和输出信息就可以了。

很多网吧的计算机就没有硬盘,而是直接通过局域网,读写远程网络硬盘里面的数据。

各类云服务器,只要让计算机能通过网络,SSH远程登陆访问就好了,因此也没必要配显示器、鼠标、键盘这些东西。

这样不仅能够节约成本,还更方便维护。

还有一个很特殊的设备,就是显卡(Graphics Card)。

现在,使用图形界面操作系统的计算机,无论是Windows、Mac OS还是Linux,显卡都是必不可少的。

有人可能要说了,我装机的时候没有买显卡,计算机一样可以正常跑起来啊!那是因为,现在的主板都带了内置的显卡。

如果你用计算机玩游戏,做图形渲染或者跑深度学习应用,你多半就需要买一张单独的显卡,插在主板上。

显卡之所以特殊,是因为显卡里有除了CPU之外的另一个“处理器”,也就是GPU(Graphics Processing Unit,图形处理器),GPU一样可以做各种“计算”的工作。

鼠标、键盘以及硬盘都是插在主板上的。作为外部I/O设备,它们是通过主板上的南桥(SouthBridge)芯片组,来控制和CPU之间的通信的。

“南桥”芯片的名字很直观

  • 它在主板上的位置,通常在主板的“南面”
  • 它的作用就是作为“桥”,来连接鼠标、键盘以及硬盘这些外部设备和CPU之间的通信。

有了南桥,自然对应着也有“北桥”。

是的,以前的主板上通常也有“北桥”芯片,用来作为“桥”,连接CPU和内存、显卡之间的通信。

不过,随着时间的变迁,现在的主板上的“北桥”芯片的工作,已经被移到了CPU的内部,所以你在主板上,已经看不到北桥芯片了。

2 冯·诺依曼体系结构

刚才我们讲了一台计算机的硬件组成,这说的是我们平时用的个人电脑或者服务器。那我们平时最常用的智能手机的组成,也是这样吗?

我们手机里只有SD卡(Secure Digital Memory Card)类似硬盘功能的存储卡插槽,并没有内存插槽、CPU插槽这些东西。

没错,因为手机尺寸的原因,手机制造商们选择把

CPU、内存、网络通信,乃至摄像头芯片,都封装到一个芯片,然后再嵌入到手机主板上。

这种方式叫SoC,也就是System on a Chip(系统芯片)。

看起来,个人电脑和智能手机的硬件组成方式不太一样。

可是,我们写智能手机上的App,和写个人电脑的客户端应用似乎没有什么差别,都是通过“高级语言”这样的编程语言撰写、编译之后,一样是把代码和数据加载到内存里来执行。

无论是个人电脑/服务器/智能手机,还是Raspberry Pi这样的微型卡片机,都遵循着同一个“计算机”的抽象概念。

这是怎么样一个“计算机”呢?这其实就是,计算机鼻祖冯·诺依曼提出的冯·诺依曼体系结构(Von Neumann architecture),也叫存储程序计算机

什么是存储程序计算机呢?这里面其实暗含了两个概念

  • “可编程”计算机
  • “存储”计算机

什么是“不可编程”???

计算机是由各种门电路组合而成的,然后通过组装出一个固定的电路版,完成一个特定的计算程序。

一旦需要修改功能,就要重新组装电路。这样的话,计算机就是“不可编程”的,因为程序在计算机硬件层面是“写死”的。

最常见的就是老式计算器,电路板设好了加减乘除,做不了任何计算逻辑固定之外的事情。

  • 计算器的本质是一个不可编程的计算机
72339337607e14eafec250e8165e9e00.png

我们再来看“存储”计算机。

程序本身是存储在计算机的内存里,可以通过加载不同的程序来解决不同的问题。

有“存储程序计算机”,自然也有不能存储程序的计算机。

典型的就是早年的“Plugboard”这样的插线板式的计算机。整个计算机就是一个巨大的插线板,通过在板子上不同的插头或者接口的位置插入线路,来实现不同的功能。这样的计算机自然是“可编程”的,但是编写好的程序不能存储下来供下一次加载使用,不得不每次要用到和当前不同的“程序”的时候,重新插板子,重新“编程”。

  • 著名的Engima Machine就用到了Plugboard来进行“编程”
d00a9884b2762c52faf99b8d7cb89583.png

可以看到,无论是“不可编程”还是“不可存储”,都会让使用计算机的效率大大下降。

而这个对于效率的追求,也就是“存储程序计算机”的由来。

冯,基于当时在秘密开发的EDVAC写了一篇报告First Draft of a Report on the EDVAC,描述了他心目中的一台计算机应该长什么样。这篇报告在历史上有个很特殊的简称,叫First Draft。这样,现代计算机的发展就从祖师爷写的一份草案开始了。

First Draft里面说了一台计算机应该有哪些部分组成

首先是一个包含

  • 算术逻辑单元(Arithmetic Logic Unit,ALU)
  • 处理器寄存器(Processor Register)

处理器单元(Processing Unit),用来完成各种算术和逻辑运算。

因为它能够完成各种数据的处理或者计算工作,因此也有人把这个叫作数据通路(Datapath)或者运算器。

然后是一个包含

  • 指令寄存器(Instruction Reigster)
  • 程序计数器(Program Counter)

控制器单元(Control Unit/CU),用来控制程序的流程,通常就是不同条件下的分支和跳转。

在现在的计算机里,上面的算术逻辑单元和这里的控制器单元,共同组成了我们说的CPU。

接着是用来存储数据(Data)和指令(Instruction)的内存。以及更大容量的外部存储,在过去,可能是磁带、磁鼓这样的设备,现在通常就是硬盘。

最后就是各种输入和输出设备,以及对应的输入和输出机制。

我们现在无论是使用什么样的计算机,其实都是和输入输出设备在打交道。

  • 个人电脑的鼠标键盘是输入设备,显示器是输出设备
  • 我们用的智能手机,触摸屏既是输入设备,又是输出设备
  • 跑在各种云上的服务器,则是通过网络来进行输入和输出。这个时候,网卡既是输入设备又是输出设备

任何一台计算机的任何一个部件都可以归到运算器、控制器、存储器、输入设备和输出设备中,而所有的现代计算机也都是基于这个基础架构来设计开发的

而所有的计算机程序,也都可以抽象为从输入设备读取输入信息,通过运算器控制器来执行存储在存储器里的程序,最终把结果输出到输出设备中。而我们所有撰写的无论高级还是低级语言的程序,也都是基于这样一个抽象框架来进行运作的。

  • 冯·诺依曼体系结构示意图
bea6f6c8168cbc0a5835ad018a0628c5.png

3 总结

冯·诺依曼体系结构确立了我们现在每天使用的计算机硬件的基础架构。

因此,学习计算机组成原理,其实就是学习和拆解冯·诺依曼体系结构。

具体来说,其实就是

  • 学习控制器、运算器的工作原理,也就是CPU是怎么工作的,以及为何这样设计
  • 学习内存的工作原理,从最基本的电路,到上层抽象给到CPU乃至应用程序的接口是怎样的
  • 学习CPU是怎么和输入设备、输出设备打交道的。=

学习组成原理,就是在理解从控制器、运算器、存储器、输入设备以及输出设备,从电路这样的硬件,到最终开放给软件的接口,是怎么运作的,为什么要设计成这样,以及在软件开发层面怎么尽可能用好它。

4 推荐阅读

  • First Draft of a Report on the EDVAC

对于工程师来说,直接读取英文论文的原文,既可以搞清楚、弄明白对应的设计及其背后的思路来源,还可以帮你破除对于论文或者核心技术的恐惧心理。

5 思考

计算机行业的两大祖师爷之一,除了冯·诺依曼机之外,还有一位就是著名的图灵(Alan Mathison Turing)。对应的,我们现在的计算机也叫图灵机(Turing Machine)。那么图灵机和冯·诺依曼机是两种不同的计算机么?图灵机是一种什么样的计算机抽象呢?

转自:https://segmentfault.com/a/1190000020015434

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vaadin_Vaadin提示:以声明方式构建UI

vaadin如果您使用过GWT,那么您可能会发现UiBinder对于设计复杂的UI很有用。 在有关Vaadin的系列文章中,我们希望在Vaadin和GWT之间得出相似之处。 Vaadin提供了多种开箱即用的工具和组件,用于构建复杂且美观的UI。 其中之一是可以像UiBinder那…

关东升python从小白到大牛_《Python从小白到大牛》第3章 第一个Python程序

本章以HelloWorld作为切入点,介绍如何编写和运行Python程序代码。 运行Python程序主要有两种方式: 1.交互式方式运行 2.文件方式运行 本章介绍这两种运行方式实现HelloWorld程序。 使用Python Shell 进入Python Shell可以通过交互…

neo4j 显示名字_Neo4j:绘制“我的名字是……我在工作”图

neo4j 显示名字在过去的几天里,我一直在关注DHH发起的有关“我的名字是……”的推文。 据我了解,其想法是表明在白板上编写采访谜语/艰巨任务是荒谬的。 您好,我叫大卫。 我不会在白板上写气泡排序。 我一直在互联网上查找代码。 我不做谜语…

Final Cut Pro x(FCPX)调色笔记

文章目录一、注意点二、调色流程1. 颜色校正(一级校色)1.1 颜色转换即色彩空间转换1.2 降噪(noise reduction 即NR)1.3 调整曝光和对比度1.4 调整白平衡1.5 饱和度1.6 肤色调整2.二级校色2.1 突出人物主体的方法一2.2 突出人物主体…

axure web组件下载_实践干货:Axure插入图标的4种办法

编辑导读:图标是我们在制作产品原型的时候使用的比较多的一类素材,在日常绘制原型的时候一般是以插入的形式添加到Axure中。本文作者结合自身经验,介绍了四种Axure中引入图标的方法,希望对大家能有所帮助。在日常绘制原型的时候&a…

上师大计算机学院分数线,分数低还想上师范大学?这4所师范院校,二本的分数就够了...

截至目前,全国各省市高考成绩全部公布了,接下来最主要的工作就是填报志愿,选择适合自己的大学和专业。每年到这个时候,就有不少家长和考生问我,自己的分数较低,不够一本线,有没有比较好的师范大…

上古卷轴3晨风职业_巫师3:上古卷轴5老玩家,入手巫师3,体验昆特牌版“实验室”...

今天小编入手了,期待已久的《巫师3》,而作为一个《上古卷轴5》的“老油条”,奇趣君下面说一下,一个老滚5的“老油条”玩《巫师3》是什么样的体验。首先我进入了开场动画,我没有跳过,而是看着他的剧情&#…

MacBook Mac OS 无法识别移动硬盘的解决办法

文章目录方法一、打开系统信息 System Information方法二、打开磁盘工具 Disk Utility方法一、打开系统信息 System Information 打开「系统信息」,点击左侧硬件列表的 USB,在右侧找到你的移动硬盘点击查看,如下图所示: 然后打开…

mysql没有开启binlog能恢复数据吗_一个妹纸rm -rf把公司整个数据库删没了...

经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据。对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错。也希望遇到问题的朋友能找到一丝灵感解决问题。事故背景安排一个妹子在一台生产服务器上安装 Oracle&#x…

头条号个人中心登录_头条号平台上线「插入小程序」功能

头条号平台上线「插入小程序」功能,创作者可在图文、小视频和自定义菜单中插入头条小程序,帐号服务能力和变现能力进一步提升。一、什么是「头条小程序」?「头条小程序」是为内容生产者提供的延伸变现工具,是对创作者内容服务的延…

stearm计算机验证码,steam账户名称怎么取,值得收藏

steam是计算机游戏界最大的数码发行平台,是一个游戏整合下载平台,很多喜欢玩游戏的朋友都会用这个软件,当然也不少刚开始使用这个软件的朋友,这些朋友因为才刚刚接触到这个软件所以不知道steam账户名称怎么取,不要担心…

造完家怎么拆东西_地弹簧玻璃门怎么拆?地弹簧玻璃门拆除注意事项有哪些?...

现如今,我们总可以看到玻璃门的身影,在我们的生活中,玻璃门可以说是随处可见。而对于安装玻璃门,大家了解多少呢?为了更好认识玻璃门,今天就带大家一起走进玻璃门的安装中,告诉大家怎么样拆卸和组装玻璃门…

dubbo provider异步_Dubbo学习(六) Dubbo面试问题

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务&#xff0c…

测试网页兼容软件,WEB测试兼容性

软件兼容性测试在目前软件测试领域占有很只要的地位,无论B/S架构还是C/S架构的软件都需要进行兼容性测试,充分保证产品的平台无关性,使用户群充分的感受到软件的友好。139WDA属于WEB产品,以下就来总结下WEB测试之兼容性测试。WEB兼…

kafka数据到flume_大数据摄取:Flume,Kafka和NiFi

kafka数据到flume初赛 在构建大数据管道时,我们需要考虑如何吸收出现在通常是Hadoop生态系统大门口的数据量,多样性和速度。 在决定采用哪种工具来满足我们的要求时,诸如可伸缩性,可靠性,适应性,开发时间成…

手机热点总是正在连接服务器,手机热点用不了?可以尝试这个方法。

原标题:手机热点用不了?可以尝试这个方法。下班路上,上司突然打来“夺命连环call”,早上的方案需要赶紧改一下。无奈,只能拿出笔记本在地铁上临时办公,关键时候连接手机热点,却发现还是没网络。…

Sublime Text for Mac 最新版安装后,无法搜索到Install Package的解决办法

打开命令面板搜索不到Install Package,说明没有安装Package Control。 如何安装Package Control? 首先打开Package Control中文镜像,打开后如下图所示: 点击「Install Now」后,如下图所示: 我们看到有两…

tomcat应用服务器有哪些,手写一个Tomcat应用服务器

mytomcat项目简介自己实现的简易的TomcatTomca实现说明Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的猫,我们可以通过实现它来深刻了;了解它的实现原理。考虑自己…

SublimeText如何让代码的关键字高亮显示

如何设置不同语法的关键字高亮显示 假设你编写java代码,希望代码关键字高亮显示,你可以在菜单栏中选择「查看」-「语法」-「java」,勾选java即可,如下图: 当然,你也可以在页面右下角点击打开语法类型列表…

stringbuffer_StringBuffer的存在的含义

stringbuffer当我处理旧代码并在StringBuffer实例上运行时,通常将它们替换为StringBuilder实例。 尽管可以从此更改中获得性能优势,但我经常在我所知不会对性能产生明显影响的地方进行更改。 我认为,除了可能带来性能收益外,还应出…