zoukankan      html  css  js  c++  java
  • 【转】EM64T和AMD64上的64位计算

    目前市场上Intel兼容处理器可以实现64位计算的主要有3种:

    Intel IA64, 基于安腾2处理器
    Intel EM64T, 基于Xeon DP "Nocona"和MP处理器
    AMD AMD64, 基于Opteron处理器

    什么是64位处理器以及64位计算的好处现在尚无定论,本文档主要介绍EM64T和AMD64的架构,解释64位计算在哪些领域应用。

    主要内容:

    64位处理器是指可以对虚拟地址空间(virtual address space)进行64位寻址的处理器。64位处理器可以以64位格式存贮数据,并可以对64位操作数执行数学运算操作。另外,处理器的通用寄存器(GPRs)和运算器(ALUs)也是64位的。

    Itanium2拥有64位寻址能力和64位通用寄存器和运算器,所以按照这个定义它被称为64位处理器。

    争论在于EM64T和AMD64是不是真正的64位处理器,Intel称其架构为"Extended Memory 64 Technology",使人容易产生这个疑问。我们知道它是IA32指令集的延伸。那么EM64T和AMD64到底是不是“真正”的64位处理器呢?答案很明确,是。当处理器执行64位操作,具备64位寻址能力,通用寄存器和运算器宽度是64位,运算器可以处理64位数据块,因此,在此处理模式下它们完全可以被称作64位处理器。

    请注意,虽然IA64,EM64T和AMD64都是64位处理器,但它们不完全兼容:
    .EM64T和AMD64除了很少数指令,如3DNOW以外,可以互相兼容,在其中之一上面编写和编译的应用程序通常可以全速运行在另外一个处理器上。
    .IA64采用了与其他两种完全不同的指令集,为Itanium2写的64位应用程序不能运行在EM64T和AMD64上,反之亦然。

    操作模式

    EM64T和AMD64上有3种特有的操作模式

    .32位传统模式

    这个模式可能是近阶段最为广泛使用的,在此模式,EM64T和AMD64将象其他IA32处理器一样工作。你可以安装32位操作系统和32位应用,但是你不能使用一些新的特性如4G内存以上的flat memory 寻址或者附加的通用寄存器,32位应用程序依然象在过去的32位处理器上一样以相同的速度运行。
    多数时间IA32应用程序甚至运行得更快,因为有一些其他的优化可以提升性能,而与最大寻址能力无关。一些共享大量数据的应用可能因Opteron多处理器配置的NUMA架构降低性能,原因是远程内存访问导致的应用程序速度下降。

    .兼容模式

    被EM64T和AMD64支持的第2个模式是兼容模式,这是介于32位和纯64位之间的模式,运行此模式需要安装64位操作系统和64位驱动,安装后无论Opteron还是Xeon处理器都可以支持在64位系统上运行32位应用或64位应用。
    兼容模式提供了在64位操作系统上运行未被编辑的32位应用程序的能力。32位应用程序仍然只能访问4G内存,但此限制只在进程级,而不在系统级。这意味着每个32位进程可以拥有自己独立的4G内存空间(假设安装了足够的物理内存)。这与IA32相比已经是一个很大的进步了,后者的系统内核和应用程序只能共享4G内存。
    另外,兼容模式不支持virtual 8086模式,所以不能支持实模式传统应用程序。16位保护模式应用可以支持。

    完全64位模式

    最后一个模式是完全64位模式。AMD对此称长模式(long mode),Intel称此为IA-32e模式。在操作系统和应用程序都是64位是应用此模式。在此模式,应用程序可以拥有一个多达40位的虚拟内存空间(1TB 可寻址内存)。物理内存的容量取决于服务器上的内存插槽总数和单根内存插槽上支持的最大内存容量。

    运行在完全64位模式的应用程序可以访问全部的物理内存空间(取决于操作系统),可以访问新增的或扩展的通用寄存器。完全64位模式要求不只操作系统和驱动程序是64位的,应用程序也要是64位的,才能充分发挥64位架构的优势。

    64位计算的收益

    就像16位处理器和16位应用程序已不再使用一样,在将来的某一天,64位处理器和应用将取代32位。

    EM64T和AMD64提供了32位和64位模式,可以平滑地实现这个过渡。这意味着在替换你的应用程序到64位之前,可以使用支持64位的硬件设备。IBM x系列服务器已经提供了很多种基于EM64T的Xeon DP处理器的机型。

    您会问64位处理带来的好处是否值得更换并升级原来32位的应用。回答是这要取决于应用的类型。以下的例子是从64位处理得到的好处:
    .加密程序:大多数加密算法基于大量的整型数据,适合在64位通用寄存器和运算器处理。
    .科学计算:整型数据的科学计算将从64位处理中受益,浮点运算不会从中受益,因为即便是32位处理器,浮点寄存器也已经达到了80位到128位。
    .需求超过4G的应用程序:这是64位处理带来的最大收益--商务运算。

    企业级应用如数据库应用了Page Addressing Extensions(PAE)和Addressing Windoss Extensiongs(AWE)寻址方案来支持超过4G的内存。这些寻址方案可以支持多达64G的内存,但它们只对超过4G内存只支持存储数据,不支持存储代码。所以这些方案只对数据库这样需要大量数据缓存的应用程序敏感。

    64位虚拟内存空间理论上最高可以支持直接访问2EB,不过当前的所谓64位处理器并不能真正做到,原因很简单,目前还没有机器支持那么大的物理内存。EM64T提供40位寻址能力,最大支持到1TB内存。

  • 相关阅读:
    Post与Get的区别
    线程的状态
    vsto publish后无法弹出winform窗口
    C# + winserver2008 openfiledialog 写入 textbox1 中的 路径不正确
    在 Visual C# 项目中调用 VBA 中的代码
    docker : env: /etc/init.d/redis: Permission denied
    python中常见的异常
    windows 的 docker使用
    CMD和DISM启用超级V
    升级pip
  • 原文地址:https://www.cnblogs.com/alphaqiu/p/2353364.html
Copyright © 2011-2022 走看看