OS | 冯诺伊曼体系和哈佛体系

冯·诺伊曼结构(von Neumann
architecture),也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的计算机设计概念结构。本词描述的是一种实现通用图灵机的计算设备,以及一种相对于并行计算的串行式结构参考模型(referential
model)。此结构隐约指导了将存储设备与中央处理器分开的概念,因此依本结构设计出的计算机又称存储程序型计算机。

冯.诺依曼(Von
Neumann)指出:程序只是一种(特殊)的数据,它可以像数据一样被处理,因此可以和数据一起被存储在同一个存储器中——这就是著名的冯.诺依曼原理。

将CPU与存储器分开并非十全十美,反而会导致所谓的冯·诺伊曼瓶颈(von Neumann
bottleneck):在CPU与存储器之间的流量(数据传输率)与存储器的容量相比起来相当小,在现代计算机中,流量与CPU的工作效率相比之下非常小,在某些情况下(当CPU需要在巨大的数据上运行一些简单指令时),数据流量就成了整体效率非常严重的限制。CPU将会在数据输入或输出存储器时闲置。由于CPU速度远大于存储器读写速率,因此瓶颈问题越来越严重。

Von Neumann architecture describes a design architecture for an
electronic digital computer with subdivisions of
a processing unit consisting of an arithmetic logic unit and processor
registers, a control unit containing
an instruction register and program counter, a
memory to store both data and instructions, external
mass storage, and input and output
mechanisms.The meaning of the term has evolved to mean a stored-program
computer in which an instruction fetch and
a data operation cannot occur at the same time because they share a common
bus. This is referred to as the Von Neumann bottleneck and often limits
the performance of the system.

Harvard architecture is also a stored-program system but has one
dedicated set of address and data buses for reading data from and writing
data to memory, and another set of
address and data buses for fetching instructions.

哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统的4条总线:程序的数据总线与地址总线,数据的数据总线与地址总线。这种分离的程序总线和数据总线允许在一个机器周期内同时获得指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了1倍。又由于程序和数据存储器在两个分开的物理空间中,因此取指和执行能完全重叠。

The Harvard architecture is a computer architecture with physically separate
storage and signal pathways for instructions and data.

在嵌入式应用领域,哈佛结构却拥有着绝对的优势。哈佛结构与冯·诺依曼结构的最大区别在于冯·诺依曼结构的计算机采用代码与数据的统一编址,而哈佛结构是独立编址的,代码空间与数据空间完全分开。

在通用计算机系统中,应用软件的多样性使得计算机要不断地变化所执行的代码的内容,并且频繁地对数据与代码占有的存储器进行重新分配,这种情况下,冯·诺依曼结构占有绝对优势,因为统一编址可以最大限度地利用资源,而哈佛结构的计算机若应用于这种情形下则会对存储器资源产生理论上最大可达50%的浪费,这显然是不合理的。

但是在嵌入式应用中,系统要执行的任务相对单一,程序一般是固化在硬件里。当然这时使用冯·
诺依曼结构也完全可以,代码区和数据区在编译时一次性分配好了而已,但是其灵活性得不到体现,所以现在大量的单片机也还在沿用冯·诺依曼结构。

嵌入式计算机在工作时与通用计算机有着一些区别:嵌入式计算机在工作期间的绝大部分时间是无人值守的,而通用计算机工作期间一般是有人操作的;嵌入式计算机的故障可能会导致灾难性的后果,而通用计算机一般就是死死机,重新启动即可。这两点决定了对嵌入式计算机的一个基本要求:可靠性。

使用冯·诺依曼结构的计算机,程序空间不封闭,程序空间的数据在运行期理论上可以被修改,此外程序一旦跑飞也有可能运行到数据区。虽然都是一些不常见的特殊情况下,但是看看哈佛结构德计算机在这些情况下是怎样的:基于哈佛结构的处理器入
MCS-51,不需要可以对代码段进行写操作的指令,所以不会有代码区被改写的问题;程序只能在封闭的代码区中运行,不可能跑到数据区,这也是跑飞的几率减少并且跑飞后的行为有规律(数据区的数据是不断变化的而代码区是不变的)。

所以,相对于冯·诺依曼结构,哈佛结构更加适合于那些程序固化、任务相对简单的控制系统。

哈佛结构采用数据存储器与程序代码存储器分开,各自有自己的数据总线与地址总线。但这是需要CPU提供大量的数据线,因而很少使用哈佛结构作为CPU外部构架来使用。但是对于
CPU内部,通过使用不同的数据和指令cache,可以有效的提高指令执行的效率,因而目前大部分计算机体系都是CPU内部的哈弗结构+CPU外部的冯·
诺伊曼的结构。

The most common modification includes separate instruction and data caches
backed by a common address space. While the CPU executes from cache, it acts as
a pure Harvard machine. When accessing backing memory, it acts like a von
Neumann machine (where code can be moved around like data, which is a powerful
technique). This modification is widespread in modern
processors such as the ARM architecture and x86 processors. It is
sometimes loosely called a Harvard architecture, overlooking the fact that it is
actually "modified". CPU cache memory is divided into an instruction cache
and a data cache.

OS | 冯诺伊曼体系和哈佛体系,布布扣,bubuko.com

时间: 2024-09-30 14:12:32

OS | 冯诺伊曼体系和哈佛体系的相关文章

2.2 冯·诺伊曼结构的要点

计算机组成 2 计算机基本结构 2.2 冯·诺伊曼结构的要点 现在的计算机形态各异,但是究其本质,几乎全部采用了冯诺依曼结构要了解计算机,首先要知道什么是冯诺依曼结构.当然,冯诺依曼结构的内涵是非常丰富的.在这一节,我们先来探究其中的一些要点. 要说冯诺依曼结构,我们就要从<EDVAC的报告草案>中说起.在冯诺依曼署名编写的这份报告中,详细描述了EDVAC这台计算机的设计方案.从那之后一直到现在,绝大多数计算机都基于这个结构进行设计.这样的结构就被称为冯诺依曼计算机结构,简称冯诺依曼结构. 这

Qt中各个widget前后位置的设定(在Qt中,所有问题都要一分为二,QWidget体系和QGraphicsWidget体系)

这两天在总结一些以往project中遇到的问题,正好别组有同事问我关于Qt中各个widget窗口的前后位置是如何定义的,这里就总结一下: 在Qt中,所有问题都要一分为二,讨论两种不同的情况:一个是最常用的QWidget体系,而另外一个则是QGraphicsWidget体系. ①:在常用的QWidget体系中,设置前后位置是主要是用raise(),underStack(),hide()函数. 理论为:在Qt中每个widget窗口都维持着自己的一个创建栈(widget's stack.),栈里边存放

[磁盘数据分析] 实现解析特定分区体系(DOS分区体系)的主引导记录扇区

近期学习了硬盘的结构以及分区体系,以DOS分区体系为例.磁盘的第一个扇区(0-512字节)被称为引导扇区(Boot Sector).内含有主引导记录(MBR).ji计算机启动并完成自检后,首先会寻找磁盘的MBR扇区并读取其中的引导记录,然后将系统控制权交给它. 我的任务是初步解析MBR的内容.判断分区类型.定位所有主分区以及它们的大小. 通过阅读数据取证入门名著"File System Forensic Analysis"获取DOS分区体系下的MBR的数据结构: 数据结构以及类的声明如

理解机器学习

理解机器学习 0. 前言 当决定想写这篇文章,以对前段时间的学习做个总结,同时对自己的努力有所交代的时候,一个难题摆在了我的面前:人工智能的命题太大,我驾驭不了.而选择一个具体的题目,其容量又不足以表达作者的思路.这与我们设计网络.选择参数何其相似! 最终,我选择了机器学习这个不大不小的范围.题目也是增删数次,风格一变再变,最终还是定了这个严肃一点的.希望大家能够喜欢. 当提到机器学习的时候,我们必须要弄清楚几个问题: 希望学到什么? 用什么方法学? 学习的效果如何? 不能学得更好的原因是什么?

计算机组成及其功能

计算机组成及其功能 计算机的组成及其功能计算机是是一种用于高速计算的电子计算机器.通过计算机,可以实现计算.存储等功能电子计算机,也叫做电脑(computer).通过计算机,可以实现计算.存储等功能计算机的组成: ?(1)硬件部分.根据冯诺伊曼提出的计算机体系架构,一台计算机主要分为五个部分:控制器.运算器.存储器.输入设备.输出设备:(2)软件部分:汇编语言.系统软件及应用软件,只有软件硬件互相配合,才是一台标准的计算机组成(3)各组成部分的功能:硬件部分:运算器:运算器又名为算计逻辑单元(A

CPU架构体系的区别

现代的CPU基本上归为冯洛伊曼结构(也成普林斯顿结构)和哈佛结构. 冯洛伊曼结构就是我们所说的X86架构,而哈佛结构就是ARM架构.一个广泛用于桌面端(台式/笔记本/服务器/工作站等),一个雄踞移动领域,我们的手持设备(平板\手机用的大多就是他了). 他们的如区别如下: 一.冯洛伊曼的体系核心是:数据和指令混在一起,统一编址.区分哪些是指令和哪些是数据大致上有以下方法: 1.用寄存器和指令周期来区分数据和指令.例如:CS段(codesegment代码段)和DS段(datasegment数据段),

计算机原理学习(1)-- 冯诺依曼体系和CPU工作原理

前言 对于我们80后来说,最早接触计算机应该是在95年左右,那个时候最流行的一个词语是多媒体. 依旧记得当时在同学家看同学输入几个DOS命令就成功的打开了一个游戏,当时实在是佩服的五体投地.因为对我来说,屏幕上的东西简直就是天书.有了计算机我们生活发生了巨大的变化,打游戏,上网,聊天,甚至到现在以此为业.有时无不感叹计算机的强大. 人类总是聪明的而又懒惰的.即便是1+1这种简单的计算都不想自己做,1623年Wilhelm Schickard 制作了一个能进行六位以内数加减法,并能通过铃声输出答案

Java 技术体系基础概念

Java 技术体系基础概念 =============================================================================== 概述: =============================================================================== 编程语言: [百度百科解释] 编程语言俗称"计算机语言",种类非常的多,总的来说可以分成机器语言.汇编语言.高级语言三大类.电脑每做的

安防监控体系解说

安防监控体系是一门被人们日益注重的新兴专业,就目前开展看,运用遍及越来越广,科技含量越来越高.简直一切高新科技都可匆匆进其开展,尤其是信息时期的降临,更为该专业开展供给契机.但就监控业界而言,体系组成始终没得到明白的划分,这使工程商和用户之间谈到安防监控体系时沟通很不不便.www.dx8.cc 关于安防监控体系,依据体系各部分功用的不同,咱们将全部安防监控体系划分为七层--表现层.掌握层.解决层.传输层.履行层.支持层.采集层.当然,因为装备集成化越来越高,关于部分体系而言,某些装备能够会同时以