按照CPU体系架构,服务器主要分为两类:
x86是指Intek的开发的一种32位指令集,从386时代开始,一直沿用至今,是一种cisc指令集,所有Intel早期的cpu,以及amd早期的cpu都支持这种指令集,在Intel官方文档中称之为(IA-32)。
x86_64是x86 CPU开始迈向64位时面临两种选择:
AMD先Intel制造出兼容x86的商用CPU,AMD称之为AMD64,且得到用户的认同。
Intel选择设计了一种不兼容x86的全新64位指令集,称之为IA-64(这个就是前面所说的安腾)。由于较AMD晚,同时由于是全新设计的CPU,没有编译器、不支持Windows后来不得不在时机落后的情况下也开始支持AMD64指令集。换了个名字叫x86_64。表示x86指令集的64扩展。
实际上,x86_64、x64、AMD64基本上是同一个东西,我们现在用的Intel/amd的桌面级CPU都是x86_64,与之相对的arm、ppc等都不是x86_64。
x86、x86_64主要区别就是32位和64位的问题,x86中只有8个32位通用寄存器:
x86_64把这8个通用寄存器扩展成了64位的,并且比x86增加了若干个寄存器(好像是增加了8个,具体数量有待考证),同样的MMX的寄存器的位数和数量也进行了扩展。此外cpu扩展到64位后,也能支持更多的内存以及其他的种种好处。
对于普通程序来说,CPU位数的扩展,寄存器数量的增加不会带来明显的性能提升,比如IE浏览器、Office办公软件这些。特定的程序才能够充分利用64位的CPU、以及更多寄存器带来的优势。比如MMX除了提升多媒体程序的性能,对矩阵、多项式、向量计算也能带来提升,更多的MMX寄存器、更大的寄存器都有利于SIMD指令的执行,能够提升CPU对数据的吞吐量(RISC指令集的CPU通常数百例,可以有效的缓存中间计算结果,不需要把中间结果写入内存,从而减少内存的访问次数。显著提升性能)
x86架构(The x86 architecture)是微处理器执行的计算机语言指令集,指一个Intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。
1978年6月8日,Intel发布新款16位微处理器“8086”,x86架构诞生。
x86-64有时会简称为x64,是64位微处理器机构及其相应指令集的一种,也是Intel x86架构的延伸产品。
x86-64是1999年由AMD设计,该64位集主要用于扩充IA-32,成为x86-64,后来改为AMD64。AMD64架构在IA-32基上新增64位寄存器,兼容早期的16位和32位软件,可使现有的以x86为对象的编译器转换为AMD64版本。
由于AMD64和Intel64基本上一致,很多软硬件产品都使用一种不倾向任何一方的词汇表达对两种架构的兼容。出于这个目的AMD对这种CPU架构的原始成为由x86_64变体为x86_64。其他公司也使用x64代表x86-64的缩写。
许多操作系统及产品,尤其是那些在Intel进入这块市场之前就引入x86-64支持的,使用amd64同时指代amd64和intel64。
现在的x86CPU在位数上由32/64bit之分,在ARCH上又有x86/x86_64/x64/i386/IA32/IA64/amd64
简单可按照下述理解:
64bit的CPU都做了向下兼容32bit的特殊设计,所以在64bit CPU上运行32bit的软件(kernel、app、driver)是没有问题的。反之则不行。
所以在某些应用场景下,64bitCPU的更大寻址空间,更快的数据传递,更快的浮点运算的特性,与其64bit地址的指针所导致的cache miss的特性始终并存。
为了充分利用64bit的优势,又避免64bit导致的cache miss的问题,Intel提出了x32 AB的概念。x32不是一个ARCH,是一个ABI。
x32可以充分使用64bit的寄存器,64bit的总线以及64bit新增的指令,从而获得更快的数据处理速度。同时x32又使用32位的地址指针,32bit的C数据类型,因此cache miss不会增加。
x32是一个BAI,其设计到的部分包括:kernel的支持、toolchain的支持、system lib的支持。
amd:超微半导体,是除了Intel以外最大的x86架构微处理器的供应商,也是除了英伟达以外仅有的独立图形处理供应商。
x86:泛指一系列由Intel公司开发的处理器架构。
arm:(advanced RISC machine或Acorn RISC machine) 适用于移动通信这种低成本、高性能、低耗电的领域。
aarch64:是armv8的一种执行状态。arrch64不是一个单纯的32位ARM架构的扩展,而是ARMv8内全新的架构,完全使用全新的A64指令集。这些都源自于多年对现代架构设计的深入研究。更重要的是,AArch64作为一个分离出的执行状态,意味着一些未来的处理器可能不支持旧的Arrch32状态。
ARMv8将64位架构支持引入ARM架构中,其中包括:
两种主要执行状态:
这些执行状态支持3个主要指令集:
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
我正在尝试复制此GETcurl请求:curl-D--XGET-H"Authorization:BasicdGVzdEB0YXByZXNlYXJjaC5jb206NGMzMTg2Mjg4YWUyM2ZkOTY2MWNiNWRmY2NlMTkzMGU="-H"Content-Type:application/json"http://staging.example.com/api/v1/campaigns在Ruby中,通过电子邮件+apikey生成身份验证:auth="Basic"+Base64::encode64("test@example.com:4c3186288ae23fd9661c
我正在向我的Controller发送一个base64图像并按原样保存它。现在我需要显示该图像。这是我要显示的内容,但未显示图像:"/>为了编码,我使用了这个java脚本函数encodeURIComponent();我的编码图像格式:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/........ 最佳答案 你不需要解码base64应该可以 关于ruby-on-rails-在rails中显示base64编码的图像,我们在StackOve
在我的mac上安装几个东西时遇到这个问题,我认为这个问题来自将我的豹子升级到雪豹。我认为这个问题也与macports有关。/usr/local/lib/libz.1.dylib,filewasbuiltfori386whichisnotthearchitecturebeinglinked(x86_64)有什么想法吗?更新更具体地说,这发生在安装nokogirigem时日志看起来像:xslt_stylesheet.c:127:warning:passingargument1of‘Nokogiri_wrap_xml_document’withdifferentwidthduetoproto
我们在服务器端遇到libxml-rubygem的问题可能是因为它使用x86_64架构:$uname-aLinuxip-10-228-171-642.6.21.7-2.fc8xen-ec2-v1.0#1SMPTueSep110:25:30EDT2009x86_64GNU/Linuxrequire'libxml'LoadError:/usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/libxml-ruby-1.1.4/lib/libxml_ruby.so:invalidELFheader-/usr/local/ruby-enterprise/
我正在尝试检索以base64编码格式接收的图像的内容类型和文件名。这是使用base64编码图像执行POST请求的代码require'net/http'require"rubygems"require'active_support'url=URI.parse('http://localhost:3000/')image=ActiveSupport::Base64.encode64(open("public/images/rails.png").to_a.join)post_params={'image'=>image}Net::HTTP.post_form(url,post_params
我正在尝试使用本手册让Jekyll在Windows8x64上运行:RunningJekyllonWindows我正在使用来自rubyinstaller.org的以下两个下载:ruby2.0.0-p0(x64)DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe所以我根据手册设置了Ruby和DevKit(希望它是更新的版本)。我尝试运行一点HelloWorld.rb脚本,它工作正常,路径变量已设置。然后我尝试运行geminstalljekyll并得到以下输出:geminstalljekyll-outputonpastebin.com问题似乎出在名为f
我刚刚使用rubyinstaller.org的安装程序安装了ruby1.9.2-p136,现在我正在尝试安装rails。当我执行“geminstallrails”时,出现以下错误:C:\Users\Clayton.USA>geminstallrailsERROR:Whileexecutinggem...(Errno::EINVAL)Invalidargument-P:/这是我正在运行的ruby和gem版本:C:\Users\Clayton.USA>ruby-vruby1.9.2p136(2010-12-25)[i386-mingw32]C:\Users\Clayton.US