2019-10-11|閱讀時間 ‧ 約 7 分鐘

不按牌理出牌,其實有跡可循:微軟跨上雲端的一大步/葉光釗

微軟為什麼要打破規則,推出配備ARM處理器的筆電、以及採用Android系統的手機?本文是曾在微軟服務、並擔任高階開發主管的作者對〈競爭、侵蝕、瓦解?微軟耐人尋味的下一步〉一文的回應;歡迎先參閱前文,以便對本文的前提與評論有更深刻的理解。
這一陣子IT界的熱門消息之一,就是微軟「不按牌理出牌」,一口氣出了配備ARM處理器的Surface Pro X、以及使用Android系統的Surface Duo手機 。
大家好奇的是,MS 要放棄一路打下來的x86/x64 Windows江山另起爐灶嗎? 這裡就我自己過去在微軟工作的經驗和理解,提出一個脈絡。
不過要先聲明的是,有部分內容事關微軟的商業機密,不方便寫得太細;有些則是憑自己的記憶和判斷寫出來,所以可能有些誤差和主觀。如果有些地方和讀者的看法不同,還請大家不必太過計較。(笑)

一個核心、多個平台
早在十幾年前(約略是2007到2008年左右),微軟的資深技術人員就提出過,Windows家族(包含Windows、Windows CE、以及Windows Mobile)的核心、以及應用的發展環境,都應該歸於一統,而且要以Windows NT技術為依歸。
其實,當年x86版的16/32位元核心已經一統於Windows XP,也就是XP的核心;但我們還是習慣稱它為「NT核心」。在當年的Think Week中,已經有一篇論文提出這個想法(這個大家可以去Google一下「One Windows Kernel」這個詞),也在微軟內部造成了許多震盪。
好文:Windows Kernel 的架構設計說明 - 2018
微軟 (Microsoft) 的 Windows 10 支援 x86、x64、ARM 和 ARM64 的架構,而且能在桌機、手機、Server 都可以執行,它的架構是如何設計,讓所有作業系統的模組能夠最大化的重複利用呢? Windows Kernel 團隊在官方部落格有將作法公開,有興趣可以參考看看~ 微軟 Windows Kernel 的文章是原文版,在 Solidot 的此篇文章有簡單整理重點: Windows Kernel 的結構,下述整理自此篇: Windows 重構的 Kernel 是用 API sets 的機制,將 DLL 與實際的環境分隔開來 Windows NT 像是一個 MicroKernel(微內核),裡面的 Core Kenrel (KE) 幾乎什麼事情都不做,只有使用 Executive layer (Ex) 來執行管理所有高階的決策(Policy)EX 仍然是 Kernel Mode,所以並不算是真正的 MicroKernel Windows Kernel 負責系統的部份 thread dispatching multiprocessor synchronization hardware exception handling the implementation of low-level machine dependent functions EX 層控制各種不同的子系統 包含 Memory Manager (記憶體管理):此程式的程式碼最多,超過 50萬行 Registry (註冊表) Power (電源) Executive (執行 Ex) Security (安全) Kernel (內核) Process Subsystem (程序的子系統) IO Object Manager 建議可以讀此書:Windows Internals Book Windows 的調度器主要是根據優先級別來決定執行哪些 Threading 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
而微軟內部也開始投入固定資源,將Windows NT改寫為ARM版本;不過在當時的商業考量之下,這部份的成果一直都沒有浮出水面。
順便提一下這件跟大家認知可能不太一樣的事:
微軟對於將系統移植到不同運算平台上,其實是很駕輕就熟的。
在ARM版之前,微軟也曾經出過PowerPC、DEC Alpha、以及MIPS等處理器版本的Windows NT,而且都還是正式的產品。
同樣的,Office軟體也都有專做平台移植的資源(多半在印度);所以,「技術」絕對不是決定要不要做這件事的關鍵,一切都是商業考量。
接下來要提到的,就是大家比較有印象的事情了,也就是Windows RT。而它的下場如何,大家也都很清楚:微軟從這場瘋狂實驗中,學到了很多重要的教訓,這裡就不再加油添醋了。

「雲端人」登場
那麼,為什麼這次微軟還要重新推出之前看起來失敗的產品,而且平台選擇充滿了各種矛盾的訊息?
的確,如果單純從傳統的微軟產品思維來看,這些都是很奇怪的決定;如果要看清楚脈絡,就要從近年微軟的轉變談起。
就我的觀察,微軟的前任執行長Steve Ballmer和現任的Satya Nadella有個很大的不同:Ballmer基本上是一個「協調者」(coordinator),他必須在Windows、Office、遊戲、Bing搜尋等各個事業單位(BU)的主要商業目標之間找到平衡點,所以決策上會有許多妥協。
而Nadella的路線很不一樣:所有的BU和投資都只有一個目標,就是將微軟雲端服務的價值極大化;這一點他非常堅持,甚至不惜對老臣開鍘。所以,華爾街給了Nadella一個稱號,就叫做「雲端人」(Cloud Guy)。目前看來,這個方向是OK的;至少資本市場給了很強的獎勵 (所以我才有閒功夫可以寫這篇文章)。
從這個角度出發來看,對於微軟在不同平台之間的大舉投資,就很容易理解了:
無論黑貓白貓,能連上Azure和Office 365的都是好貓。
只要有更多裝置連上微軟的雲端,而且更進一步的說,只要使用者都是透過微軟的app、或是微軟控制下的體驗來使用,就是在加強這些雲端服務的價值。
所以當我們看到微軟做出了各個平台的Office和開發工具、甚至是Linux版本的WSLAzure Sphere,就一點都不足為奇了。

ARM與Android扮演的角色
回到我們的場景:Surface Pro X的產生,是要將ARM的「超低耗電量」和「不間斷上網」兩個特性(Intel在這些方面的成果一直很不理想),帶進微軟拿手的生產力應用環境,進一步拉長使用雲端的時間。
不過根據之前的教訓,要讓這件事成功,還要將整個應用的生態系也跟著搬過來,所以發展了機器碼即時轉譯的能力,讓x86版本的exe執行檔,也能在新的ARM版Windows上執行。
如果這樣的體驗用戶能接受,接下來微軟就會大舉邀請PC製造商進入這個領域。究竟光靠微軟自己,是沒辦法擴大戰場的;至於與Intel之間的革命情感,可能就顧不到了……。
那手機為什麼要使用Android系統呢?我的解釋是,微軟已經明確瞭解了手機的體驗,現有的各種應用與生態系也非常成熟穩定;基本的雲端應用如地圖、電子郵件、行事曆等等,都已經在Google控制之下。
所以,與其花費極大的工夫重新複製,不如專注於將微軟能控制的體驗加上去。其實微軟之前已經推出相當多的app,包含主流的Office、還有Launcher等等;所以,從生產力應用的角度去提供一支將「微軟雲端體驗」整合得更好的手機,就是很自然的下一步發展。
不過,以我之見,微軟還有許多挑戰要因應。其中優先順序比較高的,就是Google和微軟的雲端基礎還是不同的兩套東西,包含最基本的身份認證和授權等都不一樣。
而既然要在人家的系統上加值,如何在兩套基礎上設計好的「雙向溝通」(interop)和流暢的體驗,就是一個很大的門檻。如果有一個稱職的聯盟機制 (federation) ,能讓使用者用同一個身份就能在Google和微軟服務之前穿梭,才能真正將使用者連結到微軟的雲端。

結語
最後一點,則是我自己的狂想:我希望微軟不要再重複以前「embrace and extend」(請參閱〈競爭、侵蝕、瓦解?微軟耐人尋味的下一步〉一文結尾)的做法;因為,太多的歷史教訓證明,被微軟「分支」過的技術,下場通常都不好,而且回不到主流發展。
我寧願微軟能發揮掌握生產力體驗的獨特優勢,直接在Android的主流上直接提供貢獻;這樣所產生的效益,會遠大於微軟自己分支一個「特製版Android」。
不過,這只是我一個退役老兵一廂情願的期望;至於將來會如何發展、方向成不成功,就看微軟當家領導們的智慧了。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.