【计算机组成 课程笔记】1.2 冯·诺伊曼结构

news2024/11/19 15:12:33

课程链接:

计算机组成_北京大学_中国大学MOOC(慕课)

1 - 2 - 102-冯·诺依曼结构的要点(13-'59--)_哔哩哔哩_bilibili

现代的计算机形态各异,但究其本质,几乎全部采用了冯·诺依曼结构。要了解计算机,首先要知道什么是冯·诺依曼结构。

1. 冯·诺依曼结构的要点

要说冯·诺依曼结构,就得从《关于EDVAC的报告草案》说起。这份报告论述了两个重要的思想:1. 存储程序(而不是开关连线),2. 二进制(而不是十进制)。这份报告还明确了计算机的五个部分:运算器,控制器,存储器,输入设备和输出设备。

 2. 冯·诺依曼计算机的类比

知道了冯·诺依曼计算机的基本结构以后,我们可以做一个有趣的类比。把冯·诺依曼计算机看成是一个餐馆。厨房就是CPU,其中大厨就是控制器,而他做菜的工具-锅就相当于运算器。仓库则是存储器,里面存放了做菜所需的原料和任务单。这个类比中没有包含输入输出设备,这部分我们后面再探讨。

注意,如果没有存储程序的概念,即任务单和原料不放在一起,任务单是由人来下达的,这样带来的问题就是,由于控制器和运算器运转很快,下达指令就会成为瓶颈,影响整体效率。

下面我们把计算机执行一条指令的过程来类比一下。计算机执行一条指令主要包含4个步骤:取指,译码,执行,回写。

1. 取指(Fetch):相当于厨师知道了下张任务单的存放位置,然后向仓库发起请求:我需要第1格的东西。仓库收到命令以后取出所需东西,给厨师送回去,这就是第一步-取指。

2. 译码(Decode):相当于厨师分析任务单,比如任务单上写了炒菜,原料放在仓库第6格,炒完以后给A号盘子(通用寄存器)

3. 执行(Execute):按照任务的不同步骤,进行执行

4. 回写(Write-back):将炒完的菜盛放到A号盘子里

3. 计算机结构的简化模型

通过餐馆的例子,我们形象地了解了冯·诺依曼计算机的基本结构和指令执行过程。通过这个餐馆的模型,我们几乎可以一一对应地构造出一个简化的计算机结构模型。首先看到有CPU和存储器两大部件,中间通过系统总线(控制总线,地址总线和数据总线)相连。

存储器中包含了很多存储单元。存储单元的位宽由设计计算机时对存储器的编址方法确定,比如如果存储器按字节编址,则每个存储单元存放8位二进制数。另外,存储单元的地址是唯一的,不同存储单元地址互不相同。CPU要想访问某个存储单元,必须通过地址总线给出相应的地址,因此如果地址总线宽度为n,则CPU能管理的存储单元最多为2^n个。除了存储单元以后,存储器里还有MAR(Memory Address Register,存储器地址寄存器)和MDR(Memory Data Register,存储器数据寄存器),分别用于存放CPU正在读或写的存储单元的地址和数据。

再来看一下CPU。CPU中的控制器用于控制计算机各部件完成取指令,分析指令和执行指令等功能。主要组成部分包括IR(Instruction Register,指令寄存器),PC(Program Counter,程序计数器),MAR,MDR,指令译码部件,控制电路。IR存放“正在执行或即将执行的指令”,PC存放“下一条指令的存储单元地址”,具有自动增量计数功能。MAR在访存时用于存放“存储单元的地址”,和存储器上的MAR通过地址总线相连。MDR在访存时用于存放“对存储单元读或写的数据”,和存储器上的MDR通过数据总线相连。指令译码部件对IR中的指令进行译码,以确定IR中存放的是哪一条指令。当确定了是哪条指令之后,控制电路就可以产生对应的控制信号,在时序脉冲的同步下控制各个部件的动作。

CPU中的运算器用于算术运算和逻辑运算。核心部件ALU用于完成计算,X,Y,Z是ALU的数据暂存器,可视为ALU的一部分,F用于存放运算结果的状态(零/正负/进位/溢出)。R0~Rn-1是n个通用寄存器,用于临时存放数据,数据可以来自存储器,也可以来自于其他通用寄存器或ALU的输出。不同寄存器之间传递数据通过CPU的内部总线传递。

4. 计算机执行指令的过程

根据上述的计算机简化模型,我们再来重温一下计算机执行指令的过程。之前我们提到,计算机执行一条指令主要包含4个步骤:取指,译码,执行,回写。我们假设现在执行的指令是ADD R0, [6],表示把通用寄存器R0的内容和地址为6的存储单元的内容相加,运算结果更新到R0中。

1. 取指(Fetch):控制器发出控制信号,将PC寄存器中的内容通过内部总线传递到MAR中。MAR将存储的地址通过地址总线传到存储器的MAR中。与此同时,控制电路会在控制总线上发出相应的控制信号(READ)到存储器的控制逻辑单元,代表这次访问存储器的操作是要读数据。存储器通过地址译码器查找到对应存储单元的内容,并将此内容送到存储器的MDR。然后存储器的控制逻辑单元通过控制总线发送控制信号(READY)给CPU。同时MDR的数据通过数据总线送到CPU的MDR上。然后MDR中的内容通过内部总线传递到IR中。最后PC计数器更新为下一条指令所需要访问的地址。到此,取指阶段完成。

2. 译码(Decode):当前IR寄存器中的指令被送到指令译码器,译出这是一条“ADD R0, [6]”的指令)。这时发现其中一个操作数[6]还在存储器中,因此把要取的地址(0110)放到MAR中,随后的过程类似于第1步,取回来的数据放到MDR上。然后由于后面要进行ADD的操作,因此把两个操作数放到ALU的暂存器处,即R0的数据放到X,MDR的数据放到Y,这样计算所需的操作数就准备好了。

3. 执行(Execute):在控制电路的控制下,ALU就会进行运算,将X和Y的内容执行加法,结果写到Z。

4. 回写(Write-back):将运算结果写入到通用寄存器或存储器。对于这条指令是写到R0上,那么控制电路会给出控制信号,把Z的结果通过内部总线传递到R0上。

 5. 计算机的输入输出

前面的模型我们只讲到了运算器,控制器和存储器,本节我们引入另外两个部分:输入输出设备。毕竟如果没有输入输出设备,即使我们的cpu再强大,也没什么用。

现在我们考虑在模型机上加上输入输出设备,这里我们添加一个简化的输入输出设备——输入通过手动开关控制,输出通过小灯泡表示。这就是第一台微型计算机牛郎星8800所用到的输入输出设备。

现在我们把这样的输入输出设备接到我们的模型机上。我们可以设想这是一个类似于存储器结构的输入输出芯片,它内部有2个存储单元,每个单元都有自己的地址。这里设定的地址是1110和1111,和存储器里的地址都不相同,因此可以相互区分。

那么这个输入输出设备是如何和计算机的其他部分交互的呢?和存储器类似,也是通过系统总线相连。下面我们通过输入,输出两个简单场景来理解这一过程。

输入的简单场景:CPU通过地址总线发送要读取的地址(1111),地址总线上会有简单的分流逻辑,判断当前访问的对象是输入输出设备而不是存储器。同时控制电路通过控制总线发送READ信号,表示此次操作为一个读操作。然后和之前的指令执行过程类似,1111地址的内容11100000通过MDR返回给数据总线。 

输出的简单场景:CPU通过地址总线发送要写入的地址(1110),同时控制电路通过控制总线发送WRITE信号,表示此次操作为一个写操作。然后11001100通过数据总线传送给输入输出设备的MDR,再写入到1110存储单元的位置。 

 6. 冯·诺依曼结构和具体实现

现在我们对冯·诺依曼结构已经非常熟悉了,包括五个部分: 运算器,控制器,存储器,输入设备和输出设备。 

那这样原理性的框图和现代计算机的具体实现是如何对应的呢?以个人计算机为例,CPU代表的是运算器CA和控制器CC,主存(也常称为内存条)代表存储器M。那么CPU是如何获取指令并开始执行的呢?这块主板上采用的是个人计算机上长期占据主导地位的南北桥结构。CPU对外连接的一块芯片叫做北桥,CPU想要访问主存,就得通过北桥芯片。但这里我们还要注意,计算机刚启动的时候,主存里面是没有信息的,因为当计算机断电之后,主存的信息都会丢失。那在系统启动之后,CPU从哪里获取指令呢?我们可以看到北桥下方还有一块比较大的芯片,它就是南桥,南桥内部集成了很多输入输出设备的控制器,其中包括BIOS芯片,这个芯片存储容量很小,会保存一段比较简单但是十分重要的程序,包括检查主板上有哪些设备(显卡,键盘等),是否工作正常,这颗芯片是一颗只读存储器,当系统断电之后,只读存储器中保存的信息是不会丢失的。所以当CPU启动后,CPU可以依次通过北桥,南桥来访问BIOS芯片,从里面取得指令。

 整个南北桥的结构在现代计算机的演进中发生着快速的变化。下图和上图是同一个结构,图中红色的箭头代表传输压力大,为了减少性能瓶颈,南北桥的结构发生了一些演变。

首先,北桥中的主存控制器被移到了CPU芯片当中,这样CPU就能直接访问主存而不需要通过北桥,这样可以大大提高数据的传输率,进而提升系统的性能。现在,显示的这条通道就成了下一个要解决的问题。

因此在最新的个人计算机的CPU设计中,不仅包括了主存控制器,还包括PCIe控制器,可以直接连接显卡。这样北桥中最重要的部件都被集成到了CPU中,这样北桥就没有存在的必要了。将北桥中剩余的一些功能和南桥整合到一起之后,所谓南北桥的架构其实已经消失了,整个个人计算机的主板由3片式的架构缩减成了2片式。由于没有了北桥,南桥这个名字也显得有些奇怪了,所以它现在往往有一些不同的名字(如PCH)。现在CPU直接连接了主存和显卡,还与原先的南桥直接相连,这样就将原先通过主板的复杂的通路大多移到了芯片的内部,而芯片内部的数据传输率是远远高于主板的,这样就大大地提升了系统的性能。

那既然从3片缩减成了2片,我们可不可以进一步缩减呢?其实已经有人这么做了。这就是系统芯片的概念。

系统芯片(System-on-a-Chip, SoC):将计算机或其他电子系统集成为单一芯片的集成电路。

这是一个硬币大小的芯片,但在这一颗芯片内部集中了冯·诺依曼结构的所有组件。所以我们可以用这样的芯片制造出非常小巧的计算机。这种计算机只有手掌大小,但它的功能很完备,并拥有丰富的外部接口,与普通的计算机并没有什么差别。这样高集成度的优势就让系统芯片的技术广泛应用于智能手机/平板电脑等移动计算设备上。

那么原先计算机中那么多的芯片和板卡,为什么能够集中到越来越少的芯片当中呢?那就得说到一条著名的定律——摩尔定律:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。

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

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

相关文章

内网实战1

1、信息收集: 使用nmap做端口扫描: nmap -sV -Pn -T4 192.168.26.174重要端口:80、445、139、135、3306 目录扫描: 访问80端口:发现一个网站是phpstudy搭建的; 发现一个mysql数据库,那我们…

Spring boot中调用C/C++(dll)

添加JNA依赖 <dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.5.0</version> </dependency>准备C代码/C代码 如下是C代码&#xff0c;文件名&#xff1a;xizi.c #include <std…

python的观察者模式案例

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言二、具体代码写在结尾 前言 最近写安卓的代码比较多&#xff0c;了解了java代码的注册回调机制&#xff0c;也就是观察者模式&#xff0c;搜索了一下python也有…

我的创作纪念日:进程的概念、组成、特征;进程的基本状态;进程切换、原子操作、原语;进程间通信的方式;共享缓冲区、消息队列的本质、管道通信

一、进程的概念 如何区分这三个QQ进程&#xff1f;》除了名称之外&#xff0c;OS使用pid来唯一标识进程 二、进程的组成 PCB当中存储的都是OS在对进程进行管理时候的有用信息 PCB是给OS使用的一个数据结构&#xff0c;而程序段和数据段是给进程自己使用的&#xff0c;PCB是进…

LoRA学习笔记

Background 全参微调 全量微调指的是&#xff0c;在下游任务的训练中&#xff0c;对预训练模型的每一个参数都做更新。例如图中&#xff0c;给出了Transformer的Q/K/V矩阵的全量微调示例&#xff0c;对每个矩阵来说&#xff0c;在微调时&#xff0c;其d*d个参数&#xff0c;都…

Java 8 新特性——Lambda 表达式(1)

Lambda 表达式&#xff08;Lambda expression&#xff09;是一个匿名函数&#xff0c;基于数学中的λ演算得名&#xff0c;也可称为闭包&#xff08;Closure&#xff09;。现在很多语言都支持 Lambda 表达式&#xff0c;如 C、C#、Java、 Python 和 JavaScript 等。Lambda 表达…

Linux服务器中创建SVN项目详细步骤

一、Linux服务器中的SVN安装和搭建项目环境可以参考一下文章: 1、《阿里云服务器搭建》------搭建SVN服务 2、在一个服务器的svn上&#xff0c;设置一个端口号对应一个项目 3、如何解决Linuxsvn无法显示日志的问题 二、Linux服务器中的SVN项目如何添加项目的忽略文件&#xff1…

asp、jsp环境安装

文章目录 phpasp安装环境打开asp大马 aspx修改配置打开aspx大马 jsp安装环境打开jsp大马 jspx php 在github下载138shell文件夹&#xff0c;解压后放入win10虚拟机&#xff0c;然后安装phpstudy&#xff08;在这里不再演示&#xff09;&#xff0c;并将php大马文件放在C:\phpS…

Python3的特殊容器库

诸神缄默不语-个人CSDN博文目录 文章目录 1. ordered-set库&#xff1a;有序集合2. collections库&#xff1a;特殊容器 1. ordered-set库&#xff1a;有序集合 ordered-set PyPI 安装方式&#xff1a;pip install ordered-set 使用&#xff1a; 输出&#xff1a;OrderedS…

C#_进程单例模式.秒懂Mutex

什么是Mutex? 可以定义调用线程是否具有互斥性&#xff0c;程序创建者拥有控制权&#xff0c;相反只能引用程序。 参数1&#xff1a;如果是程序创建者&#xff0c;就获得控制权。 参数2&#xff1a;名称&#xff0c;可使用GUID生成。 参数3&#xff1a;out 返回值&#xf…

c++(8.29)auto关键字,lambda表达式,数据类型转换,标准模板库,list,文件操作+Xmind

作业&#xff1a; 封装一个学生的类&#xff0c;定义一个学生这样类的vector容器, 里面存放学生对象&#xff08;至少3个&#xff09; 再把该容器中的对象&#xff0c;保存到文件中。 再把这些学生从文件中读取出来&#xff0c;放入另一个容器中并且遍历输出该容器里的学生。…

每天刷题五道RHCSA/1-5道(RedHat8.2)

1.第一题配置网络 nmcli con show #查看⽹卡信息 ​ nmcli con mod Wired connection 1 ipv4.method manual ipv4.addresses 172.25.250.100/24 ipv4.gateway 172.25.250.254 ipv4.dns 172.25.250.254 #配置ip信息&#xff0c;中间⽤空格隔开 ​ nmcli con up Wired connection…

大型综合集团数字化转型解决方案PPT

导读&#xff1a;原文《大型综合集团数字化转型解决方案PPT》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 部分内容&#xff1a; 喜欢文章&#xff0c;您可以关注…

SAP_ABAP_OO_ALV案例

SAP ABAP顾问能力模型梳理_企业数字化建设者的博客-CSDN博客SAP Abap顾问能力模型https://blog.csdn.net/java_zhong1990/article/details/132469977 一、OO_ ALV ,面向对象开发ALV报表 基于对收款清账平台的开发&#xff0c;解释 OO_ALV开发的程序结构与代码模板参考 1.1 代…

FrameBuffer 应用编程

目录 什么是FrameBufferLCD 的基础知识使用ioctl()获取屏幕参数信息使用mmap()将显示缓冲区映射到用户空间 LCD 应用编程练习之LCD 基本操作LCD 应用编程练习之显示BMP 图片BMP 图像介绍在LCD 上显示BMP 图像在开发板上测试 在LCD 上显示jpeg 图像在LCD 上显示png 图片LCD 横屏…

Ansible项目实战管理/了解项目环境/项目管理

一&#xff0c;项目环境 1.项目基础 项目过程 调研阶段 设计阶段 开发阶段 测试阶段 运营阶段 2.项目环境 个人开发环境 公司开发环境 项目测试环境 项目预发布环境 灰度环境&#xff1a;本身是生产环境&#xff0c;安装项目规划&#xff0c;最终所有的生产环境都发…

nginx-concat

为了减少tcp请求数量&#xff0c;nginx从上有服务器获取多个静态资源&#xff08;css&#xff0c;js&#xff09;的时候&#xff0c;将多个静态资源合并成一个返回给客户端。 这种前面有两个问号的请求都是用了cancat合并功能。 先到官网下载安装包&#xff0c;拷贝到服务器编译…

华为MateBook14 2020款 锐龙版R5集显触屏(KLVL-WFH9)原装Win10系统工厂模式安装包

系统自带F10智能还原功能、带指纹、显卡、声卡、网卡等所有驱动、出厂主题壁纸、系统属性华为专属LOGO标志、Office办公软件、华为电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文件格式&#xff1a;rar压缩包 文件大小&#xff1a;11GB 链接&#xff1a;htt…

Web服务器-Tomcat详细原理与实现

Tomcat 安装与使用 &#xff1a;MAC 安装配置使用Tomcat - 掘金 安装后本计算机就相当于一台服务器了&#xff01;&#xff01;&#xff01; 方式一&#xff1a;使用本地安装的Tomcat 1、将项目文件移动到Tomcat的webapps目录下。 2、启动Tomcat 3、在浏览器输入想要加载的…

软考:中级软件设计师:邮件加密系统,网络安全保障,网络威胁与攻击,防火墙技术

软考&#xff1a;中级软件设计师:邮件加密系统 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是需要细心准备的 &…