问题标签 [computer-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.
assembly - 为什么我们需要不同的 CPU 架构用于服务器、小型/大型机和混合内核?
我只是想知道除了 INTEL 和 AMD 之外还有哪些其他 CPU 架构可用。因此,在 Wikipedia 上找到了 CPU 架构列表。
它将著名的 CPU 架构分为以下几类。
- 嵌入式 CPU 架构
- 微机 CPU 架构
- 工作站/服务器 CPU 架构
- 小型/大型机 CPU 架构
- 混合核心 CPU 架构
我正在分析他们的目的,几乎没有怀疑。以微机 CPU (PC) 架构为参考,并将其与其他架构进行比较,我们有:
嵌入式CPU架构:
- 他们是一个全新的世界。
- 嵌入式系统很小,并且执行非常具体的任务,主要是实时和低功耗的,因此我们不需要微型计算机 CPU(典型 PC)中可用的这么多和这么宽的寄存器。换句话说,我们确实需要一个新的小型架构。因此,新架构和新指令 RISC。
- 上述观点也阐明了为什么我们需要一个单独的操作系统(RTOS)。
工作站/服务器 CPU 架构
- 不知道什么是工作站。有人澄清了工作站。
- 至于服务器。它专用于运行特定的软件(服务器软件,如 httpd、mysql 等)。即使其他进程运行,我们也需要给予服务器进程优先级,因此需要新的调度方案,因此我们需要不同于通用操作系统的操作系统。如果您对服务器操作系统的需要还有更多的意见,请提及。
- 但我不明白为什么我们需要新的 CPU 架构。为什么微机 CPU 架构不能胜任这项工作。有人可以澄清一下吗?
小型/大型机 CPU 架构
- 同样,我不知道这些是什么以及小型机或大型机用于什么?我只知道它们很大,占据了整个楼层。但我从来没有读过他们试图解决的一些现实世界的问题。如果有任何人致力于其中之一。分享你的知识。
- 有人可以澄清它的目的以及为什么微机 CPU 架构不适合它吗?
- 是否也有一种新的操作系统呢?为什么?
混合核心 CPU 架构
- 没听说过这些。
如果可能,请以这种格式保留您的答案:
XYZ CPU 架构
- XYZ 的目的
- 需要一个新的架构。为什么现在的微机CPU架构不能工作?它们高达 3GHZ 并拥有多达 8 个内核。
- 需要一种新的操作系统为什么我们需要一种用于这种架构的新型操作系统?
编辑:
伙计们,这不是作业问题。我不能做任何事情让你们相信。我不知道问题是不清楚还是其他,但我只对特定的技术细节感兴趣。
让我以另一种方式提出这个问题的一部分。你正在接受面试,如果面试官问你“告诉我,微型计算机处理器速度快、功能强大,而且我们的 PC 操作系统很好。为什么我们需要不同的架构,如 SPARC、Itanium,需要不同的操作系统,如 Windows Server用于服务器?”。你会怎么回答?我希望明白我的意思。
jvm - 为什么 JVM 是基于栈的,而 Dalvik VM 是基于寄存器的?
我很好奇,为什么 Sun 决定让 JVM 堆栈为基础,而 Google 决定让 DalvikVM 以寄存器为基础?
我想JVM不能真正假设目标平台上有一定数量的寄存器可用,因为它应该是平台独立的。因此,它只是将寄存器分配等推迟到 JIT 编译器。(如我错了请纠正我。)
所以安卓的人想,“嘿,那太低效了,让我们马上去一个基于寄存器的虚拟机......”?但是等等,有多个不同的 android 设备,Dalvik 的目标寄存器是多少?Dalvik 操作码是否针对一定数量的寄存器进行了硬编码?
市场上所有当前的 Android 设备是否具有大致相同数量的寄存器?或者,在 dex 加载期间是否执行了寄存器重新分配?这一切如何结合在一起?
assembly - 从哪里获得所有版本的 x86 又名 IA32 指令集架构手册
我知道Intel 64 and IA-32 Architectures Software Developer's Manuals。我也知道这些涵盖了所有遗留和旧处理器 ISA。
但我想要每个处理器的单独手册(与处理器一起发布的手册)。
我设法找到了80386 手册
编辑:
我开始赏金了。
operating-system - 关于基于 ROM 的可执行文件的基本问题
我对存储在 ROM 中的可执行文件有基本的疑问。
据我所知,带有文本和 RO 属性的可执行文件存储在 ROM 中。问题是 ROM 是只读存储器,如果出现代码需要写入内存的情况怎么办?
我无法在这里举出任何例子来引用(可能我对这种情况一无所知,或者我错过了基本的东西;)但是关于这个话题的任何观点都可以极大地帮助我理解!:)
Last off - 1. 有没有这样的情况?2. 在这种情况下,将代码从 ROM 复制到 RAM 是答案吗?
用一些例子回答可以有很大帮助..
提前谢谢了!
/多发性硬化症
computer-architecture - 乘法运算时间的比较
设 a, b 是两个 n 位整数。我想知道a平方的计算时间是否比a * b短。
谢谢您的帮助。
assembly - 需要更多关于处理器地址线的说明
昨天,我在思考为什么操作系统不能使用整个 64 位进行寻址?我发现了另一个有趣的事情。让我们以英特尔酷睿 2 双核处理器为例。
从英特尔酷睿 2 双核处理器 E8000 和 E7000 系列的“4.2 字母信号参考” - 数据表我知道它有 36 条地址线和 64 条数据线。数据手册将地址线称为 A[35:3],将数据线称为 D[63:0]。
这究竟意味着什么?这是我从上面的理解(几乎没有未回答的问题):
- 因为,有 36 条地址线。总可寻址内存为 2^36=64GB,每个物理内存位置(字节)由 36 位数字寻址。
- 因为,没有提到 A[2:0]。这意味着 MMU(更具体的分页单元)在将虚拟地址转换为物理地址(在地址表的帮助下)之后,它只在地址线 A[35:3] 上放置了 33 个最高有效位。RAM 发送所有 8 个可能的字节(具有 3 个 LSB,A[2:0]),即。对于这 8 个字节范围内的任何请求。RAM 发送相同的 8 字节数据。正确的?我想这样做是为了提高效率。
- 接下来发生什么?我的意思是 MMU 需要 1 个字节的数据,但 RAM 发送了 8 个字节。它将如何处理?
- 自英特尔启用 PAE 以来,此地址总线宽度是否为 36 位?
- 我无法在新的处理器数据表(英特尔® 酷睿™ i7 处理器至尊版)中找到地址总线和数据总线宽度。:( 帮我!
security - 我可以从哪里开始寻求更好地了解计算机的工作原理?
我一直在试图弄清楚我以后想进入哪个计算机领域。大学对我来说指日可待,我考虑过研究计算机工程、软件工程等。
最近,我一直在研究计算机安全系统和对此类系统的利用(纯粹出于教育目的,在我自己的财产上)。不幸的是,在我看来,99% 的人都不知道他们在说什么。通常,它只是“运行这个”或“运行那个”或“你可以找到一个可以为你完成所有这些工作的程序”——没有人知道这些程序是如何工作的或它们究竟做了什么。
我发现使用其他人创建的东西只是为了像大多数人一样称自己为“黑客”,这没有乐趣或兴趣。事实上,我什至对黑客系统的兴趣不如他们如何做。
我的问题都归结为这一点。
我想了解计算机的来龙去脉——从互联网和数据传输等抽象概念到硬件,应有尽有。我想知道计算机如何存储数据(如何组织这些数据等)以及处理器等实际上在做什么。什么是WIFI,真的吗?计算机是否与光通信(我从我在飞机上读到的杂志上捡到的东西)。
我有多年的计算机/编程经验,但是我对计算机的了解非常广泛。计算机在彼此之间来回发送信息包,每个包都有标题和内容。计算机由多个组件组成,每个组件都有自己的功能(处理器、显卡、RAM、硬盘驱动器等),我已经对此有了一些基本的了解。等等等等等等
电脑有这么多,我不知道从哪里开始。我相信我的一些大学课程会为我解决问题,但我很好奇,我想开始尽可能多地学习。
这个问题可能到处都是,所以请在必要时让我澄清一下。我现在有点时差,但我试图以最快、最连贯的方式写下我的想法(不过,我可能在这个过程中完全失败了)。
提前感谢您的任何建议!
贾斯蒂安·迈耶
请随时编辑此问题的标签。现在的太可怕了。
编辑:
所有这些评论都让我兴奋:)。有很多东西要学习,有很多东西要探索:)。
language-agnostic - 冗余写入的缓存行为
编辑 - 我想我问的问题太长了,所以我把它说得很具体。
问题:如果内存位置在 L1 缓存中并且未标记为脏。假设它有一个值 X。如果你尝试将 X 写入同一个位置会发生什么?是否有任何 CPU 会看到这样的写入是多余的并跳过它?
例如,是否存在比较两个值并丢弃冗余写回主存储器的优化?具体来说,主流处理器是如何处理这个问题的?当值是像 0 这样的特殊值时呢?如果即使对于像 0 这样的特殊值也没有这样的优化,那有什么原因吗?
动机:我们有一个可以轻松放入缓存的缓冲区。多个线程可能会通过相互回收来使用它。每次使用都涉及写入缓冲区中的n 个位置(不一定是连续的)。回收只是意味着将所有值设置为 0。每次回收时,大小 n 个位置已经为 0。在我看来(直觉上)避免如此多的冗余回写会使回收过程更快,因此是个问题。
在代码中这样做没有意义,因为分支指令本身可能会导致不必要的缓存未命中(if (buf[i]) {...} )
computer-architecture - 学习计算机(电气?)工程的免费资源?
首先,我刚从 DEFCON 18 回来,我完全受到启发去了解更多关于硬件的知识。例如,如何将 LED 添加到徽章?( http://www.grandideastudio.com/portfolio/defcon-18-badge/ ) 我如何学习如何阅读原理图并了解我可以用它做什么?
我在亚马逊上查看了一些计算机工程书籍,但它们都非常昂贵。我也意识到他们甚至可能不是我想要的。有哪些免费资源可以学习如何修改硬件?
另外,作为旁注,我相当精通软件。我还构建了计算机并在更高级别上玩了一些硬件,但我想深入了解。
谢谢!