标签: processor-architecture

为什么x86-64系统只有48位虚拟地址空间?

在一本书中,我读了以下内容:

32位处理器具有2 ^ 32个可能的地址,而当前的64位处理器具有48位地址空间

我的期望是,如果它是一个64位处理器,地址空间也应该是2 ^ 64.

所以我想知道这种限制的原因是什么?

x86-64 cpu-architecture virtual-memory processor-architecture

88
推荐指数
7
解决办法
4万
查看次数

什么体系结构/ OS其他线程可以在构造函数调用后看到默认的非最终字段值?

我正在尝试在非最终字段的对象初始化不足的情况下重现内存可见性问题(JLS 17.5 Final Field Semantics,FinalFieldExample类示例).它声明"但是,fy不是最终的;因此,reader()方法不能保证看到它的值4"

我试过这段代码:

public class ReorderingTest2 {


    public static void main(String[] args) {
        for (int i = 0; i < 2500; i++) {
            new Thread(new Reader(i)).start();
            new Thread(new Writer(i)).start();
        }
    }

    static class Reader implements Runnable {
        private String name;

        Reader(int i) {
            this.name = "reader" + i;
        }

        @Override
        public void run() {
            //System.out.println(name + " started");
            while (true) {
                FinalFieldExample.reader(name);
            }
        }
    }

    static class Writer implements Runnable {
        private String name; …
Run Code Online (Sandbox Code Playgroud)

java multithreading constructor processor-architecture memory-visibility

14
推荐指数
1
解决办法
380
查看次数

编译器如何"知道"如何将代码转换为特定于处理器的程序集?

答案者已经知道的东西,但在这里,无论如何都要显示我的思考过程:

从HLL到机器代码,这里发生了大量的事件(有连接器和其他东西,但是现在让我们忽略它):

HLL - >编译器 - >汇编程序---->机器代码

根据我购买的硬件,它可能有不同的处理器(Intel,SPARC,ARM等).汇编语言是特定于处理器的.因此,当代码来自Compiler - > Assembler时,生成的汇编代码是特定于处理器的.

切入点:

例如:我的硬件上有Windows操作系统.而且,我得到'用于Windows 7 64位的C编译器'.而且我在同一硬件上也有Ubuntu,我得到'Ubuntu 64位的C编译器'.

  1. 我可以在具有不同处理器架构的不同硬件上使用相同的OS,或者在相同硬件上使用不同的OS(如上例所示).当我下载C编译器时,为什么编译器被列为特定于操作系统?而不是处理器特定?由于编译器的重点是将HLL转换为Assembly,这是特定于处理器体系结构而不是特定于操作系统.

  2. 假设1.事情是如何完成的,当我下载适用于Windows 7和Ubuntu的编译器时,编译器如何知道要生成哪个特定于处理器的汇编代码?编译器是否附带各种特定于处理器的汇编程序?

compiler-construction assembly processor processor-architecture

7
推荐指数
1
解决办法
2783
查看次数

ARM系统模式与arm管理员模式有何不同?

为了将ARM处理器模式与x86操作模式(ring0到ring 3)进行比较,用户模式看起来就像ring3,用户空间程序在其中运行.但是我无法将ring0与系统模式或管理员模式联系起来.根据信息来源,似乎两种模式都可以很好地完成在特权模式下运行内核的工作.我能找到的两种模式之间的唯一区别是:

  1. 寄存器13和14以管理员模式存储,而对于系统模式,所有15个寄存器都是相同的.
  2. 系统模式不能直接在异常上输入,而管理员模式可以.
  3. 系统模式以某种方式防止链接寄存器的损坏.

你能解释一下这些模式之间的差异吗,来自x86背景的人可以理解吗?

另外,模式之间的细微架构差异(如库存寄存器的数量)如何使一个优于另一个?

embedded arm embedded-linux processor-architecture risc

5
推荐指数
1
解决办法
5360
查看次数

ARM vs X86:如何做出选择?

我最近看到过32位ARM处理器.我想知道为什么我们不能使用它来构建台式计算机.在那种情况下它与X86有何不同?ARM架构是否消耗更少的功率..这是在嵌入式系统中使用它们的原因吗?

  • 为什么我们有两个(ARM和X86)处理器架构?
  • 为什么我们通常将ARM架构用于嵌入式和x86用于工作站?
  • 选择一个而不是另一个的一般标准是什么.

embedded processor-architecture

1
推荐指数
1
解决办法
3348
查看次数