iOS [渣搬运] ARM64 与你

luikore · 2013年09月28日 · 最后由 jasl 回复于 2013年09月29日 · 8940 次阅读

关于 iPhone 5s 搭载的 arm64 (或者说 aarch64, ARMv8)

http://www.mikeash.com/pyblog/friday-qa-2013-09-27-arm64-and-you.html

  • 内存可以超 4G 了
  • 可以放心使用双精度浮点数,另外使用高精度数值库如 GMP 时做运算需要的指令变少
  • 又多了一堆寄存器... 函数调用很少需要压栈了,对各种寄存器虚拟机也或许有大幅提升,等 MRuby 的性能报告
  • 对 AES, SHA1, SHA256 都有专门指令,如果你 https 网站的 nginx 指定了 AES 作为传输方式,证书用 SHA1 (DSS1 必须 SHA1)/SHA256 (DSS2 可以选 SHA256) 生成摘要签名,就应该对肾 5s 有性能提升。不过我不知道 safari 是否已经用上了这些指令,提升多少也未知...
  • ObjC 可以使用 tagged pointer 了,比较小的 NSNumber 可以以值存储不用放到堆上,性能可追 unboxed value
  • 对象头 64 位 isa 游刃有余,可以分出 19 bit 给引用记数

土豪金,今天你肾了没?

P.S. nginx 指定 AES 偏好

# global option
# enable it only when `openssl engines -t` contains "aesni"
ssl_engine aesni;

...

# https server options

# SSLv3 and TLSv1 are BEAST-vulnerable, use RC4 if you add them for ancient browsers
ssl_protocols TLSv1.1 TLSv1.2;

# `man 1 ciphers`
# the result list can be verified with `openssl ciphers <your-list>`
ssl_ciphers AES128-SHA:AES256-SHA:HIGH:!aNULL:!eNULL:!LOW:!ADH:!MD5;

ssl_prefer_server_ciphers on;

http://www.arm.com/files/downloads/ARMv8_Architecture.pdf

话说这 arm64 我还是在去年 rubyconfchina 上第一次听说的...

我能说这帖子 低调奢华有内涵 么?

这漫画的味道好熟悉。

太过高端..看不懂,唯有默默的 +1 心脏

#1 楼 @lgn21st 呃,连翻译都算不上啊,还是推荐看原文... #2 楼 @sevk 名叫 亚人

求漫画含义解析!

#5 楼 @cifer_ 只是和肾有点关系就拖来了... 已喀嚓掉

但除了第二条是因为寄存器和总线宽度都提升到了 64bit,其他几点都跟 64bit 没什么关系,不过 64bit 是个极大的噱头,真正的功臣被淡化了。。

#7 楼 @jasl 有关系啊:32bit 的地址只支持 4G (2**32) 的寻址空间; objc 的 tagged pointer 在 32 位是无法启用的; 64 位 isa 可以保存对象的类型外还可以分出一部分来做引用计数,32 位的实现是另外维护一个表来做计数的,区别很大。

#8 楼 @luikore 哦 这个不懂...不过其他语言的编译器或者解释器呢?

#9 楼 @jasl 其他语言也有用,像 ruby 在 32bit 就不可能把浮点数 (64bit) 压进 tagged pointer 中,必须在堆上分配空间。javascript 也有类似的 tagged pointer 设计的。benchmark 各种跑出两倍四倍速了...

#11 楼 @jasl

NaN 和 64bit (luaJIT 和不少 js 引擎都在用) http://nikic.github.io/2012/02/02/Pointer-magic-for-efficient-dynamic-value-representations.html

后来猴子改成了 128bit 的 fat pointer, 在 64 bit 处理器下 fat pointer 的操作也是指令更少

#12 楼 @luikore 我慢慢看...是因为总线宽度长了,地址的传输次数减少?

#12 楼 @luikore 但你认为 64bit 和一级缓存增加一倍、新增的两个寄存器还有新的指令 这些进化,对性能影响的排名是什么?

#13 楼 @jasl 是因为 32 位塞不进这么多东西,和 64 位架构的指令可以处理 64 位地址和整数

需要 登录 后方可回复, 如果你还没有账号请 注册新账号