问题标签 [harvard-architecture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
3436 浏览

security - 哈佛架构计算机对任意代码注入和执行攻击免疫吗?

哈佛架构计算机具有独立的代码和数据存储器。这是否使它们免受代码注入攻击(因为数据不能作为代码执行)?

0 投票
6 回答
913 浏览

c - 哈佛架构平台上的 NULL 指针问题

本周我们在这里遇到的有趣问题。

我们在哈佛架构嵌入式平台上使用 C 语言工作,该平台具有 16 位数据地址和 32 位代码地址。

当您使用函数指针时会出现此问题。如果你有类似的代码

或者

一切安好。

但是,如果您有类似的代码

然后,因为NULL定义为(void *) 0,所以编译器(在这种情况下为 gcc)a) 不会发出警告,并且 b) 对您的函数指针进行 16 位比较,而不是 32 位比较。只要您的函数指针不恰好位于 64k 边界上,所以所有底部 16 位都是 0,就可以了。

目前,我们有大量代码,其中包含针对 NULL 的显式检查。它们中的大多数将是数据指针,但其中一些将是函数指针。快速 grep!= NULL== NULL显示 3000 多个结果,许多人需要手动检查。

所以,我们现在想要的是

  1. 一种查找比较函数指针(但不是数据指针)的所有情况的方法(因此我们可以将它们与我们定义为 32 位 0 的 FP_NULL 进行比较),或者

  2. 重新定义 NULL 以使其做正确的事情。

  3. (或者,我想,更新我们的 gcc 端口以检测并正确处理这种情况)。

我想不出任何适用于 1 的方法。我能想到的唯一方法 2 是将 NULL 重新定义为 0 函数指针,这对于绝大多数针对数据指针的比较来说是非常浪费的。(32 位比较是 4 条指令,16 位比较是 1 条指令)。

有什么想法或建议吗?

0 投票
1 回答
830 浏览

memory - 在哈佛架构上启动 linux

当我遇到这个问题时,我正在研究熊猫板。pandaboard 使用 OMAP 4430,一种基于哈佛的架构。该板具有 1GB 内存(DDR2 内存)。但是哈佛的建筑需要两个记忆,对吧?

这是我理解的Linux内核映像存储在MMC/SD卡中,然后由引导加载程序拉出到内存中。现在,引导加载程序从哪里运行(是 1GB 内存吗?)。引导加载程序在哪里转储内核映像?(再次,它是 1GB 内存吗?)

0 投票
1 回答
323 浏览

c++ - 哈佛建筑映射到 HLL

这是我一直在寻找的一个问题,但我还没有得到正确的答案:(

  • 哈佛架构如何映射到 C/C++ 语言(高级语言)?
  • 它们是如何相关的,或者架构如何帮助 HLL?
0 投票
2 回答
5534 浏览

architecture - 冯诺依曼架构有什么优势?

我研究了冯诺依曼和哈佛建筑的区别,得出的结论是,冯诺依曼与哈沃德建筑相比没有积极的一面,只有“瓶颈”和脆弱性等消极一面。那么为什么今天大多数计算机都使用冯诺依曼架构呢?

0 投票
2 回答
6100 浏览

hardware - 冯诺依曼VS哈佛建筑

为什么在设计个人计算机时,基于冯诺依曼架构的计算机架构优于哈佛架构;而哈佛架构用于设计基于微机的计算机系统和基于DSP的计算机系统?

0 投票
1 回答
7385 浏览

cpu - 如何判断我的计算机是哈佛架构还是冯诺依曼架构?

我正在使用具有以下配置的笔记本电脑。处理器:Intel(R) Core(TM)i5-4300U CPU @1.90GHz 2.49GHz RAM:8GB 系统类型:64 位操作系统,基于 x64 的处理器

Windows 版:Windows 8.2 企业版

当我阅读有关 CPU 架构的信息时,我想知道我的计算机遵循的 CPU 架构是什么?

0 投票
0 回答
400 浏览

gcc - 为新的哈佛架构 RISC 重新定位 gcc/llvm

我想知道是否有编译器经验的人可以告诉我我的想法是否可行。

基本上,我将向我的一位教授提出一个项目想法并参加“项目课程”——我不会在这里详细说明这个过程,只是说这是我提出这个想法的本科项目课程。

我将制作一个新的 RISC ISA(类似于 MIPS,但没有延迟槽,没有浮点......)并为它编写一个软件模拟器,因为这将完全在软件中完成。

但我打算把它做成哈佛架构的 CPU——意思是,数据不能被执行;代码和数据是分开的。

制作 ISA 和它的模拟器相对容易,我不希望遇到任何我不熟悉的东西。

然后我想为我的新 ISA 创建一个 gcc 或 llvm 后端,以便可以为我的新 ISA 编译 C 程序。

现在我从来没有写过编译器。鉴于我的 ISA 主要是在 MIPS 之后建模的,我可以在 MIPS(或其他一些 RISC)后端之后建模后端。

我的问题是关于哈佛架构部分。我应该期望在这里遇到重大问题吗?这将如何使代码生成部分复杂化?

最后,我将在我模拟的哈佛 CPU 上写一篇报告,并分析它的一些安全方面(即不允许数据执行可以防止缓冲区溢出攻击等,等等......)。

如果我在这里滥用了“哈佛建筑”一词,让我澄清一下我的意思。我不是在谈论内部缓存或类似的东西。我只是指让 CPU 将代码和数据分开,以便无法执行数据。

0 投票
1 回答
187 浏览

algorithm - 当它对应于哈佛架构时,为什么我们使用 RAM 计算模型进行算法分析?

根据维基百科,RASP 计算模型对应于冯诺依曼体系结构,而 RAM 计算模型对应于哈佛体系结构,冯诺依曼体系结构最接近计算机,因为我们的计算机中有 ram 内存,用于存储数据和指令,而 RAM模型有不同的程序内存和不同的数据内存,那么为什么我们使用RAM模型进行算法分析呢?

https://en.wikipedia.org/wiki/Random-access_stored-program_machine

0 投票
2 回答
1871 浏览

raspberry-pi - 树莓派是基于哈佛架构的吗?

我的印象是 Raspberry Pi 的 ARM 处理器虽然具有 armhf 微架构,但仍然遵循Von Neumann架构(主要是为指令和数据共享主存储器)。

但是,我在计算机科学教科书中遇到了这一行(AQA Unit 2 的 A Level Computer Science,Kevin R Bond 2016,pg265)

树莓派计算机基于哈佛架构

在网上搜索后,我找不到任何可以证明或反驳这一说法的可靠来源。这是错误的吗?我将不胜感激答案中给出的来源。

我知道 Raspberry Pi SE 存在,但鉴于该标签不存在,我认为将其发布在这里更合适