---
title: "Go 推出平台無關 SIMD 實驗：寫一次、跨架構加速"
url: https://sammy.hk/go-%e6%8e%a8%e5%87%ba%e5%b9%b3%e5%8f%b0%e7%84%a1%e9%97%9c-simd-%e5%af%a6%e9%a9%97%ef%bc%9a%e5%af%ab%e4%b8%80%e6%ac%a1%e3%80%81%e8%b7%a8%e6%9e%b6%e6%a7%8b%e5%8a%a0%e9%80%9f/
author: Ethan
published: 2026-09-26T15:31:00+08:00
modified: 2026-09-25T08:57:18+08:00
description: "Go 官方部落格於 2026 年 9 月 24 日發表文章，介紹 Go 1.26 與 1.27 的實驗性 SIMD（單指令多資料）API，以及 1.27 新增的跨平台 simd 套件。文章由 David Chase 與 Junyang Shao 撰寫。[1] 背景 官方指出，SIMD 是現代處理器的原生能力，可對資料向…"
categories: ["開放源碼"]
tags: [Go, GOEXPERIMENT, Golang, SIMD, "效能優化", "編譯器"]
source: https://sammy.hk
---
Go 官方部落格於 2026 年 9 月 24 日發表文章，介紹 Go 1.26 與 1.27 的實驗性 SIMD（單指令多資料）API，以及 1.27 新增的跨平台 `simd` 套件。文章由 David Chase 與 Junyang Shao 撰寫。\[1\]

## 背景

官方指出，SIMD 是現代處理器的原生能力，可對資料向量執行一致運算，例如以單一指令完成八對 `float64` 值的加法，能顯著加速運算密集型工作，由密碼學、資料處理到人工智能都受惠；Go 自家的 Green Tea 垃圾回收器亦以 SIMD 加速掃描記憶體中的存活物件。\[1\]\[2\]

在此之前，Go 開發者若要用 SIMD，只能撰寫 Go 組譯；由於成本高，只有真正效能關鍵的運算核心才會採用，結果大量可用 SIMD 的軟件白白浪費中央處理器能力。\[1\]

Go 1.26 為 amd64 引入 SIMD API，Go 1.27 再加入 arm64（NEON）與 wasm 的 API。但官方指出，SIMD API 的根本難題在於各平台差異極大：不只支援的操作不同，連向量表示方式也不同——部分平台提供 128 至 512 位元的固定長度向量，另一些平台的向量大小在編譯期未知，須在程式啟動時查詢。為完整存取這些平台的能力，相關 API 放在依架構而定的 `archsimd` 套件。\[1\]

## 新套件與設計取捨

Go 1.27 在依架構 API 之外，推出實驗性、完全可攜、與平台及向量大小無關的 SIMD 介面，設計上參考 C++ 的 Highway。官方目標是讓「寫一次」的程式碼達到接近組譯的效能，並在尚未支援 SIMD 的平台上提供稱職的模擬。`simd` 套件目前支援 amd64 的 AVX、AVX2、AVX512，arm64 的 NEON，以及 wasm 的 SIMD 指令。\[1\]

官方解釋 `simd` 套件如何隱藏差異：它把固定大小向量從型別系統中移除，只支援所有平台交集的運算，並以其他 SIMD 指令高效填補落差。官方列出四項目標：足以支撐許多受惠於向量化的資料處理演算法；當原始碼操作與底層硬件吻合時，效率與組譯相同；否則盡量良好地模擬；以及易於閱讀理解——即使程式碼最終由大型語言模型撰寫亦然。\[1\]

## 使用方式

使用這個實驗性套件須設定 `GOEXPERIMENT=simd`。官方指出，`simd` 向量型別就是首字母大寫的複數原生型別，例如 `simd.Uint8s` 或 `simd.Float32s`；向量由切片載入、儲存。文章以內積運算為例，示範以 `simd.LoadFloat32s` 載入兩段切片、以 `MulAdd` 累加，並在尾段以部分載入處理剩餘元素。\[1\]

## 下一步

官方表示，計劃另發文章更詳細介紹 `archsimd`。就 Go 1.28 而言，團隊打算為 `archsimd` 加入 SVE 支援，並希望同步加入 `simd`；亦希望為 `simd` 增加更多 SIMD 操作，例如位元計數、遮罩運算、歸約運算與向量重排。Go 1.28 亦會包含少量「功能變體」，避免在具備硬件向量實作、只缺一兩個操作的平台上，降級至完全模擬，例如 Raspberry Pi。\[1\]

## 參考資料

\[1\] [The Go Blog — Platform-independent SIMD in Go（2026 年 9 月 24 日）](https://go.dev/blog/simd-experiment)

\[2\] [The Go Blog — Green Tea garbage collector](https://go.dev/blog/greenteagc)

### 相關文章：

1. [Linux Forum Asia 2005 之後感](https://sammy.hk/linux-forum-asia-2005-%e4%b9%8b%e5%be%8c%e6%84%9f/ "Linux Forum Asia 2005 之後感")
2. [重新安裝 Serendipity](https://sammy.hk/reinstall-serendipity/ "重新安裝 Serendipity")
3. [近期喜歡上搞 Web Application](https://sammy.hk/interests-to-code-webapp/ "近期喜歡上搞 Web Application")
4. [久違在家中電腦上進行編譯](https://sammy.hk/%e4%b9%85%e9%81%95%e5%9c%a8%e5%ae%b6%e4%b8%ad%e9%9b%bb%e8%85%a6%e4%b8%8a%e9%80%b2%e8%a1%8c%e7%b7%a8%e8%ad%af/ "久違在家中電腦上進行編譯")
