简明图解冯·诺依曼计算机体系

1 基本硬件组成

一台计算机组成至少如下:

  • CPU(Central Processing Unit) 中央处理器,计算机的所有计算由CPU执行。
  • 内存(Memory) 撰写的程序、打开的浏览器、运行的游戏,都要加载到内存里才能运行。 程序读取的数据、计算得到的结果,也都要放在内存里。内存越大,能加载的东西自然也就越多。 存放在内存里的程序和数据,需要被CPU读取,CPU计算完之后,还要把数据写回到内存。然而CPU不能直接插到内存上,反之亦然。
  • 主板(Motherboard) 一个有着各种各样,有时候多达数十乃至上百个插槽的配件。CPU、内存都要插在主板。 主板的芯片组(Chipset)和总线(Bus)解决了CPU和内存之间如何通信的问题。
    • 芯片组 控制数据流转
    • 总线 实际数据传输的高速公路。总线速度(Bus Speed)决定数据传输速度

输入(Input)/输出(Output)设备,即I/O设备。 显示器这所谓的输出设备。 鼠标和键盘所谓的输入设备。 硬盘,数据持久化。

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

其实只需要有I/O设备,能让我们从计算机里输入和输出信息即可。云服务器,只要让计算机能通过网络,SSH远程登陆访问就好了,因此没必要配显示器、鼠标、键盘。

显卡(Graphics Card),使用图形界面操作系统的计算机必不可少。

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

如果玩游戏,做图形渲染或者跑深度学习应用,就需要买一张单独显卡,因为显卡里有GPU(Graphics Processing Unit,图形处理器),GPU一样可以做各种“计算”的工作。

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

“南桥”芯片

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

以前的主板上通常也有“北桥”芯片,用来作为“桥”,连接CPU和内存、显卡之间的通信。不过现在的主板上的“北桥”芯片的工作,已经被移到了CPU内部。

2 冯·诺依曼体系结构

手机制造商们把CPU、内存、网络通信,乃至摄像头芯片,都封装到一个芯片,然后再嵌入到手机主板上,即SoC,System on a Chip(系统芯片)。

但无论是PC/服务器/手机都遵循冯·诺依曼体系结构(Von Neumann architecture),也叫存储程序计算机,意味着“可编程”、“存储”计算机。

计算机由各种门电路组成完成计算程序。一旦需要修改功能,就要重新组装电路。这样的话,计算机就是“不可编程”的,因为程序在计算机硬件层面是“写死”的。最常见的就是老式计算器,电路板设好了加减乘除,做不了任何计算逻辑固定之外的事情。

再看“存储”计算机。程序存储在计算机内存,可通过加载不同程序解决不同问题。

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

为了效率,有了“存储程序计算机”。冯基于在秘密开发的EDVAC写了一篇报告First Draft of a Report on the EDVAC,描述了一台计算机什么样。 包含处理器单元(Processing Unit):

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

完成各种算术和逻辑运算。

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

包含控制器单元(Control Unit/CU):

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

控制程序的流程,通常就是不同条件下的分支和跳转。 算术逻辑单元和控制器单元组成CPU。

存储器

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

分类

存储介质

半 导体存储器: 内存、U盘、固态硬盘

磁存储器: 磁带、磁盘

存取方式

随机存取存储器RAM(Random Access Memory),通过电容存储数据,必须隔一段时间刷新一次,如果掉电,那么一段时间后将丢失所有数据。

随机读取、与位置无关 串行存储器: 与位置有关、按顺序查找 只读存储器(ROM): 只读不写

层次结构

原理

缓存-主存层次

局部性原理。即在CPU与主存之间增加一层速度快(容量小)的Cache,以解决主存速度不足问题。

主存-辅存层次

局部性原理。在主存之外增加辅助存储器(磁盘、SD卡、 U盘等),以解决主存容量不足的问题。

输入和输出设备

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

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

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

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

通用设计

数据线

I/O设备与主机之间进行数据交换的传送线。

分为:

  • 单向传输数据线
  • 双向传输数据线

状态线

I/O设备状态向主机报告的信号线 查询设备是否已经正常连接并就绪 查询设备是否已经被占用

命令线

  • CPU向设备发送命令的信号线
  • 发送读写信号
  • 发送启动停止信号

设备选择线

主机选择I/O设备进行操作的信号线 对连在总线上的设备进行选择

CPU与IO设备的通信

程序中断

当外围IO设备就绪时,向CPU发出中断信号。CPU有专门的电路响应中断信号。 提供低速设备通知CPU的一种异步的方式,CPU可以高速运转同时兼顾低速设备的响应。

  • 程序中断的一个简单流程

不过频繁切换 CPU 也会降低性能。所以又有如下方式

DMA (直接存储器访问)

DMA直接连接主存与I/O设备

  • 当主存与I/O设备交换信息时,无需中断CPU,可提高 CPU 利用率

CPU速度与I/O设备速度不一致。 硬盘与外接显卡里都有。

原文地址:https://cloud.tencent.com/developer/article/2181178

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340