张大妈的确是一个休闲社区…就算扔了点学术和工业界的常识,大部分人还在盯着皮毛和表象不放。与其听媒体乱吹,不如静下心读读书。目测大多数人也啃不动教科书,不如看看 Computer Systems: A Programmer's Perspective,走马观花地理解一下计算机的基本工作原理吧。。。
下面是 Apple 给 LLVM 社区发的邮件,可以参考一下。大体上就是开发者提交的二进制(由多个 .o 链接而成)里面,多了两个 section,分别用来存储 bitcode 和编译时的命令行。
http://lists.llvm.org/pipermail/llvm-dev/2016-February/094851.html
不需要用生活举例,科学地论证即可。论性能,SPECINT 上 Apple 的移动 SoC 早都和 Intel 的桌面 CPU 比肩了。论理论,AMD64 ISA 的历史遗毒的确不少,因为要保证兼容性(想想 Intel 滑铁卢的 IA64 吧)。论软件和 toolchain,Apple 有封闭的小花园,早都要开发者提交软件时嵌入 LLVM IR 了。
建议复习一下体系结构的课程… RISC vs CISC 之争,很久之前就“握手言和”了:CISC 出现了 前端,用于解码为 uops,在类 RISC 的后端执行。同理,RISC 出现了前端,可以在执行前进行 speculation 之类的优化。ISA 是 RISC/CISC 和性能关系不大:8086 作为 MCU 甚至在 TF 卡的固件里出现(!),而和 ARM 同是 RISC 家族的 DEC Alpha 出现在了太湖之光的超级计算机里。
不是的,Apple 的 XCode 编译后的 Mach-O 文件里面嵌入了跨平台的 LLVM IR,Apple 可以在分发时直接在服务器重新进行 Codegen 导出对应 target 的原生二进制。嵌入 IR 的 LLVM patch 已经出来好一阵子了,Apple 🐮🍺!
搞底层性能优化的来插个楼…CPU 的微结构很复杂,前端的复杂解码是 CISC 体系下 CPU 的一大能耗,因为现代 CPU 的执行引擎都是基于 uops 的。长期看,还是没有历史包袱的新 ISA (例如 RISC-V)更好一些。另外“算力”是一个不专业的概念。跑同样的任务,同样的 CPU 也可以由 SISD 或 SIMD 的指令完成,GPU 上可以 SIMT 地跑,甚至还有更专一的 DSP, FPGA 甚至 ASIC。不同的指令性能特性完全不同,这时工具链的优化就很重要了。Intel 的牛*之处也在此。最后我来提一个终极方案:谁都说服不了谁,就跑个 SPECINT 看跑分吧…
关注数量超出限制,
请先删除部分内容再尝试