1. 2021 款 Mac Pro M1 入手体验
1.1. 背景
公司刚推出换 Apple M1 Pro(10 核 M1 处理器、32G、512G),把用了将近 2 年的 2019 Pro(16G、i7、1T)换了,本来还有 1 年旧本就可以归自己,无奈想着早用早享受:),哈哈
拿到后花了一个小时不到完成数据迁移(原电脑数据大约 300G 左右),入手后的感觉:
- 重、厚实,外部颜值比旧版低,内部屏幕舒服 - 我不看颜值,看内在还是 OK 的:)
- 无 touchbar,键盘还是比较舒服
- 屏幕刘海部分习惯就好,我主要看屏幕不是看刘海:(
- 充电又会到 magic 磁铁吸力充电,我的 mac 2015 pro 充电器不知道能不能冲 :P
- 电脑温控好很多,坐床上再也不觉得碰着一个暖手宝了
- 电量比较给力
- 音效公放很不错 :)
1.2. iterm2 遇到 Bad CPU type in executable 问题
|
|
运行 softwareupdate --install-rosetta
解决
原因: macOS 尝试运行不是为 Apple M1 芯片构建的应用程序时,macOS 将提示安装Rosetta2
以自动将应用程序转换为 Apple 芯片;
在终端中,没有自动检测丢失Rosetta
以运行旧架构命令行工具。
参考: https://apple.stackexchange.com/questions/408375/zsh-bad-cpu-type-in-executable
1.3. M1 芯片相关背景知识
Apple Silicon
是对苹果公司使用ARM架构
设计的单片系统(SoC)和封装体系(SiP)处理器之总称。它广泛运用在 iPhone、iPad、Mac 和 Apple Watch 以及 HomePod 和 Apple TV 等苹果公司产品,苹果公司不具有生产芯片的业务,所有 Apple 芯片均由其他芯片代工企业,如三星、台积电进行制造
参考: https://zh.wikipedia.org/wiki/Apple_Silicon
1.3.1. Intel(X86) 和 Apple Silicon(M1 ARM)
ARM 架构,过去称作高级精简指令集机器,由于节能的特点,其在其他领域上也有很多作为。ARM 处理器非常适用于移动通信领域,符合其主要设计目标为低成本、高性能、低耗电的特性。手机销售约 98%使用了 ARM 处理器。
软件下载通常区分Intel(X86)
和Apple Silicon(M1 ARM)
版本,实际是软件针对不同的 CPU 指令集X86
和ARM
的编译输出的结果;
1.3.2. Rosetta
https://zh.wikipedia.org/wiki/Rosetta
Rosetta
是苹果电脑公司发布的在 Mac OS X 上的一个二进制编译器软件,软件的名字起源于罗塞塔石碑,为破译古埃及象形文字的关键(吴军老师之前也讲过:),苹果利用这名字来形容编译器的重要性。
Rosetta 可以让在 Power PC 平台上开发的软件在英特尔平台的麦金塔电脑上顺利运行,基于 Transitive 公司的QuickTransit 技术,也是麦金塔电脑从 PowerPC 向英特尔转换的一个重要部分,确保原先的 Mac OS X 程序能在新的英特尔平台上运行,转换有一定 CPU 开销,但对于 CPU 资源非常小。
2011 年夏天推出的 Mac OS X Lion,则不再支持 Rosetta (架构转换已完成数年,大多数 Mac 平台软件已更新为通用二进制甚至不再支持 PowerPC 架构);
2020 年 macOS 11.0 Big Sur 内置 Rosetta2 可以让在 Intel 平台上开发的软件在 ARM 架构平台的麦金塔电脑上顺利运行。是麦金塔电脑从 Intel 向 ARM 转换的一个重要部分,确保原先的 macOS 程序能在新的 ARM 平台上运行;
1.3.3. Rosetta 2 - Intel 版本程序转换为 ARM 程序运行的关键,有开销,但 M1 芯片足够弥补
简单说,Rosetta 2
是一个仿真器,旨在连接英特尔
和苹果处理器
之间的过渡,简而言之,它会翻译为英特尔构建的应用程序,以便它们可以在 Apple Silicon 上运行。Rosetta 2
预装在使用 ARM 芯片麦金塔电脑的操作系统上。它可以将 AMD64 指令进行翻译,对于绝大多数的程序来说,Rosetta 2
都可以运作。由于Rosetta 2
在安装软件时会把 Intel 版本程序转换为 ARM 程序,加上 Apple 的处理器性能很高,因此即使需要大计算量的程序,通过 Rosetta 2 编译也能流畅地执行(M1 芯片所带来的性能提升足以弥补这一点)
PS: 从这段也看到苹果的技术演进,先适配兼容,再独立变强大,再兼容适配包容,厉害!
1.3.4. Rostetta vs M1 性能对比
结论: 将 ARM 优化版本与通过仿真运行的 Intel 版本进行比较,我们在标准导入/导出基准测试中没有看到任何显着的性能改进。是的,原生M1 Lightroom
速度更快,但在大多数情况下,速度并不是非常明显,对于一些较长的导出任务,似乎确实有轻微的减速,但最显着的改进是应用程序的整体可用性:它运行更流畅,CPU 上更轻,所以风扇根本不需要打开。
参考:
- https://petapixel.com/2020/12/08/benchmarking-performance-lightroom-on-m1-vs-rosetta-2-vs-intel/
- https://www.eet-china.com/mp/a80245.html
1.3.5. 安装 Rosetta 2
您使用的是搭载 Apple 芯片的 Mac,首次打开为基于Intel
的 Mac 构建的 App 时,系统会要求您安装Rosetta
,点按“安装”,然后输入您的用户名和密码以允许继续安装。
参考: https://support.apple.com/zh-cn/HT211861
1.4. 充电器问题: 140w vs 96w
更多参考: https://www.cnbeta.com/articles/tech/1210361.htm
1.5. Apple Mac M1 Pro 芯片配套软件
- Jetbrain 系列:
- VScode,Apple Silicon 构建- VS Code 现在可用于 Apple Silicon 的稳定版本。
- 企业微信:
- Alfred: Version 4.6.4 b1294 (macOS 10.11+, 64-bit Intel, Apple Silicon)
- Golang
2. 软件使用遇到问题
2.1. Goland 调试遇到 debugging compiled not supported 问题
|
|
原因:brew 默认安装的是darwin/amd64
版本,重新安装darwin/arm64
版本的 golang,下载地址: https://go.dev/dl/go1.18.darwin-arm64.pkg
2.1.1. 卸载旧版本 darwin/amd64
|
|
2.1.2. 重新安装 darwin/arm64
|
|
- golang 重新选择 GOROOT 为
/usr/local/go
2.2. 编译继续报 Goland Delv Launcher 错误
原因 Goland 基于 Delve 做调试器,本地环境的 M1 的/Library/Developer/CommandLineTools
是通过2019 MBP
直接文件同步迁移过来的,导致调试报错;
网上查询的 dlv 版本过低的问题,在最新的 Apple Silicon 版本的 Goland、Go 安装后是已经 Fix 了。
|
|
现象:
|
|
查看本地 dlv 版本 $ /Applications/GoLand.app/Contents/plugins/go/lib/dlv/macarm/dlv version Delve Debugger Version: 1.8.0 Build: 1b11a8847212068301f56093ec4369d34eb029fd
在 dvl 官网的 ChangeLog 中,这个 M1 问题已 Fix 了: Print message and exit if Delve detects it is running under Rosetta on M1 macs (@aarzilli)