cpu-architecture

指令寄存器在访问内存之前是否必须将其内存地址发送给 MAR?
cpu-architecture

指令寄存器在访问内存之前是否必须将其内存地址发送给 MAR?

我正在研究计算机系统和操作系统,我一直对何时将内存地址传输到内存地址寄存器 (MAR) 感到困惑。当指令寄存器 (IR) 收到操作码指令和要执行操作的内存地址时,它是否必须先将此信息发送到 MAR,然后才能访问 IR 指向的内存位置?或者 IR 是否有足够的信息直接指向内存位置?为什么需要 MAR? ...

Admin

无论目标的 CPU 架构是什么,创建 Live Medias 的软件都能工作吗?
cpu-architecture

无论目标的 CPU 架构是什么,创建 Live Medias 的软件都能工作吗?

假设使用软件,您将特定 CPU 架构(例如 x86-32)的 Linux 发行版映像刷入 USB 驱动器,并且已知它工作得很好。那么使用相同发行版、相同版本但不同 CPU 架构(例如 powerpc)的映像,我们如何知道该软件将创建可以启动的 Live Media? 就我所知,存储分区之所以可引导,不仅仅是因为在正确的物理偏移量、文件结构或纯文本文件中包含正确的 ID,还因为其中有小型二进制程序(引导加载程序)。毫无疑问,这些二进制程序此时在 CPU 上以原始方式运行。因此,软件添加正确的 CPU 版本的二进制文件确实很重要。 那么,在这方面,我们是否必...

Admin

一个核心可以在一个时钟周期内执行多个操作/指令吗(因为核心有不同的执行单元)?
cpu-architecture

一个核心可以在一个时钟周期内执行多个操作/指令吗(因为核心有不同的执行单元)?

核心有自己的执行单元和加载/存储缓冲区(额外的“缓存” - 除 L1 之外)。 这些执行单元有自己的寄存器吗?内核也有自己的专用寄存器吗?还是所有内核(及其执行单元)都共享 CPU 寄存器?或者我们有共享寄存器,而其他一些寄存器是内核专用的? 是否可以在一个核心上的一个刻度内执行多个 CPU 机器指令(但核心的执行单元不同 - 在超线程模式下也可以并行执行)? 每个核心是否真的都有自己的 (专用) FPU 和 ALU 作为执行单元?我以为 CPU 只有一个 FPU(无论核心数量多少)。 ...

Admin

新一代 CPU 在虚拟化方面是否有所提升?
cpu-architecture

新一代 CPU 在虚拟化方面是否有所提升?

我使用的工作站配备 Westmere Xeon CPU,但在 Virtual Box 中得到的性能有点令人失望。我的笔记本电脑配备 i7-8550U,在“流畅度”和虚拟机内部的一般性能方面表现更好。上一代 CPU/CPU 扩展中是否有任何重要变化使虚拟化速度更快? 期待您的答复 ...

Admin

aarch64 上的 Armhf 二进制文件
cpu-architecture

aarch64 上的 Armhf 二进制文件

因此,我在 Raspberry Pi 3 上运行 Arch Linux(64 位)。我想在这台机器上运行一些 BOINC 项目。虽然有些项目(如 SETI@home)提供了可以完美运行的正确 aarch64 二进制文件,但大多数项目仅支持 armhf。我尝试强制这些项目向这个 aarch64 系统提供工作单元,但工作单元几乎立即崩溃并出现以下错误:execv: Exec format error 为什么会发生这种情况?我以为 aarch64 系统可以运行 armhf 二进制文件。这难道不等同于在 x86_64 上运行 x86 二进制文件吗?我可以设置 QE...

Admin

Spectre/Meltdown Windows 与 Ubuntu
cpu-architecture

Spectre/Meltdown Windows 与 Ubuntu

我使用带有 AMD E2-1800 处理器的笔记本电脑,该处理器没有获得任何微码更新。 这意味着它无法完全抵御 Spectre/Meltdown。Ubuntu 中有一个非常详尽的 wiki 来解释此类问题。但不幸的是,我目前使用的 Windows 8.1 上没有找到任何信息。 我的问题是,对于没有微码更新但安装了所有 Windows 更新的 AMD 处理器,什么受到保护,什么不受保护? 哪个系统更容易受到 Spectre/Meltdown 攻击:Ubuntu 18.04 还是 Windows 8.1? ...

Admin

从注册表更改 CPU MHz
cpu-architecture

从注册表更改 CPU MHz

这安全吗? 我对 CPU 很感兴趣,所以我做了一些挖掘,找到了这个位置 Computer\HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0 ~MHz 以十六进制显示您的 MHz。 ...

Admin

安装不同大小的内存条之前需要注意哪些事项?(2Gb + 4Gb)
cpu-architecture

安装不同大小的内存条之前需要注意哪些事项?(2Gb + 4Gb)

我的旧台式机装有 32 位 Windows 7。但由于处理器支持 64 位,因此我将其与 64 位 Windows 7 进行了双启动。我想通过安装另一个 4Gb RAM 棒将 RAM 升级到 6Gbs。我不需要更多,因为我只需要在该系统上玩一些休闲游戏(CSGO 等)。我猜它会在 32 位中显示少于 4Gbs 的可用空间,但在 64 位操作系统中会显示少于 6Gbs 的可用空间。或者会这样? 我知道我需要购买频率相同的 RAM。我当前的 RAM 是 1333MHz,因此出于兼容性考虑,我将购买 4Gb 1333Mhz。我也将从同一制造商处购买。 在购买新...

Admin

CPU/DMA如何访问硬盘?
cpu-architecture

CPU/DMA如何访问硬盘?

考虑 x86 CPU / LINUX 我想了解 cpu 或 dma 如何访问硬盘?是否必须通过 IO 端口地址访问硬盘,还是必须映射到内存(MMIO)? ...

Admin

现代英特尔处理器中的推测加载和存储是如何发生的?
cpu-architecture

现代英特尔处理器中的推测加载和存储是如何发生的?

我认为store queue在现代 Intel 处理器中,它用于存储内存地址和存储数据。它们直到提交阶段才会进入 L1 缓存。但我不能 100% 确定它是否正确,或者在执行阶段(即提交阶段之前)是否允许存储。关于加载,我不知道是否有任何load queue,load-store queue或任何其他结构,或者在执行阶段(即提交阶段之前)是否允许从 L1 缓存进行加载。 我还想知道Memory dependence predictor英特尔处理器中是否有任何可以在知道加载和存储地址之前预测它们之间真正的依赖关系的功能。 请帮我澄清我的疑问。 ...

Admin

多核CPU线程同步在硬件层面如何工作?
cpu-architecture

多核CPU线程同步在硬件层面如何工作?

我试图了解多核 CPU 如何在硬件级别实现线程同步。 从我迄今为止的研究来看,我发现该过程涉及使用内存中的位置作为锁,并且对于线程来说,要运行其同步代码段,它需要使用特殊指令同时读取 0 的值并将 1 的值写入此内存位置来获取锁。 这应该可以完美运行,但是现代 CPU 包含多个级别的每个核心和共享缓存。如果 CPU 实现缓存写回,则保存锁定值的内存位置将与跨核心的 L1 缓存不同步。如果 CPU 实现缓存直写协议,则每次写入内存都会对性能产生重大影响。 CPU 如何维护用作缓存锁的内存位置的同步? ...

Admin

尝试在 AMD C-60 上运行 Docker for Windows 时不支持虚拟化
cpu-architecture

尝试在 AMD C-60 上运行 Docker for Windows 时不支持虚拟化

我的 Acer Aspire One,型号AO725,不支持虚拟化技术。在这种情况下,还有其他方法可以在 Windows 上运行 Docker 吗? 处理器:AMD C-60 APU,配备 Radeon(tm) HD Graphics 1.00 GHz 系统类型:64 位操作系统,基于 x64 的处理器 版:Windows 10 专业版 版本:1809 年 Hyper-V: 使能够 虚拟化:禁用 ...

Admin

指令集和伪命令
cpu-architecture

指令集和伪命令

我在 Linux 上对各种二进制文件使用“objdump”,它返回它们的汇编代码。我收到的命令是“真实”命令还是伪命令?我读到过有些命令是其他命令的组合,它们被称为伪命令。这是真的吗?如果是,我如何才能从可执行文件中仅获取“真实”命令? ...

Admin

TSX-NI 在运行虚拟机时是否有优势?
cpu-architecture

TSX-NI 在运行虚拟机时是否有优势?

我的问题是关于 CPU 架构和指令集扩展 TSX-NI。 它适用于哪些使用场景,特别是对于 Web 开发或运行虚拟机和 Docker 有用? ...

Admin

最优CPI计算混乱
cpu-architecture

最优CPI计算混乱

我在读https://insidehpc.com/2017/07/cycles-per-instruction-matters/: 例如,如果某部分代码需要 1200 个周期并执行 600 条指令,则 CPI 为 1200/600 = 2。 但是,在这种情况下,核心的 CPI 应该等于 0.5,这意味着没有向核心发送足够的工作,因为只有四分之一的容量被使用。 要么是我错过了此链接中的某些内容(即使错过了也看不到),要么是 0.5 的计算没有道理。有人能解释一下吗? ...

Admin