Jim Keller:在指令集上辯論是一件悲哀的事情
在半導體設計領域, Jim Keller的名字如雷貫耳,不僅僅是因為他參與或領導的大型成功項目的數量,而且這些項目都為各自的公司創造了數十億美元的收入。他的職業生涯橫跨DEC、AMD、SiByte、Broadcom、PA Semi、Apple、AMD(再次)、Tesla、Intel,現在他在Tenstorrent 擔任首席技術官,開發下一代可擴展的AI 硬件。吉姆的職業準則(work ethic )經常被描述為“享受挑戰”,
最近,這意味著致力於當今最激動人心的半導體方向,要么是高性能計算,要么自動駕駛和AI。今日, AnandTech發布了他們最近與Jim 聊天的記錄,半導體行業觀察摘錄其中一些自認為關鍵信息,以饗讀者。
CPU 指令集:Arm 與x86 與RISC-V
IC:您過去曾談到CPU指令集,而我在這次採訪中收到的最大請求之一是請您談一下對CPU指令集的看法。具體問題是關於我們應該如何處理對它們的基本限制,我們如何轉向更好的限制,以及在Arm、x86和RISC V方面,你都是什麼觀點。我想在某一時刻,你說大多數計算發生在幾十個操作碼上。我沒記錯嗎?
JK: [爭論指令集]是一個非常悲傷的故事。它甚至不是幾十個[操作碼] ,而是80%的核心執行只有6條指令,加載((load)、存儲(store)、加(add)、減(subtract)、比較(compare)和分支(branch)。有了這些,你幾乎已經涵蓋了它。如果您使用Perl或其他語言編寫代碼,則調用和返回可能比比較和分支更重要。但是指令集只有一點點重要——你可能會因為缺少指令而損失10%或20% [性能]。
有一段時間我們認為可變長度指令(variable-length)真的很難解碼。但我們一直在想辦法做到這一點。您基本上可以預測所有指令在表格中的位置,一旦有了好的預測器,您就可以很好地預測這些內容。因此,當您構建小型計算機時,固定長度的指令似乎非常好,但是如果您正在構建一台真正的大型計算機,要預測或找出所有指令的位置,它並不能支配模具。所以沒有那麼重要。
RISC 剛出現時,x86 是半微碼。所以如果你看看芯片,一半的芯片是ROM,或者可能是三分之一或其他東西。RISC 人員可以說RISC 芯片上沒有ROM,因此我們獲得了更高的性能。但是現在ROM這麼小,你找不到它。其實加法器這麼小,你怎麼都找不到?今天限制計算機性能的是可預測性,其中兩大因素是指令/分支可預測性和數據局部性。
現在,新的預測器非常擅長這一點。它們很大-,兩個預測器比加法器大得多。這就是您進入CPU 與GPU(或AI 引擎)辯論的地方。GPU 人員會說“看,沒有分支預測器,因為我們並行執行所有操作”。所以芯片有更多的加法器和減法器,如果這就是你的問題,那就對了。但是他們在運行C 程序方面很糟糕。
GPU 是為在像素上運行著色器程序而構建的,因此如果給定800 萬像素,而大型GPU 現在有6000 個線程,則您可以覆蓋所有像素,每個像素每幀運行1000 個程序。但這有點像一群攜帶沙粒的螞蟻,而大型人工智能計算機,它們具有非常大的矩陣乘法器。他們喜歡數量少得多的線程來做更多的數學運算,因為問題本身就很大。而著色器的問題是問題本質上很小,因為像素太多。
真正存在三種不同類型的計算機:CPU、GPU 和AI。英偉達正在做一些“中間人”的事情,他們使用GPU 來運行人工智能,並試圖增強它。其中一些顯然工作得很好,而其中一些顯然相當複雜。有趣的是,這種情況經常發生,通用CPU 在看到GPU 的矢量性能時,添加了矢量單元。有時這很好,因為你只有一點點矢量計算要做,但如果你有很多,GPU 可能是更好的解決方案。
IC:那麼回到ISA 問題——很多人都在問你對Arm 與x86 的看法如何?你是怎麼看
JK:我有點在意。這就是發生的事情。當x86首次出現時,它非常簡單和乾淨,對吧?當時,有多種8位架構:x86、6800、6502。當時我可能對所有這些架構都進行了編程。然後奇怪的是,x86是開放版本。他們將其授權給七家不同的公司。這給了人們機會,但英特爾出人意料地授權了它。然後他們去了16位和32位,然後他們添加了虛擬內存、虛擬化、安全性,然後是64位和更多功能。因此,當您添加內容時,架構會發生什麼,您保留舊內容以使其兼容。
所以當Arm 剛出來的時候,它也是一台乾淨的32 位計算機。與x86 相比,它看起來更簡單,更容易構建。然後他們添加了一個16 位模式和IT(如果有的話)指令,這很糟糕。然後[他們添加] 一個奇怪的浮點向量擴展集,在寄存器文件中帶有覆蓋,然後是64 位,部分清理了它。有一些特殊的東西用於安全和啟動,所以它變得更加複雜。
現在RISC-V 出現了,它是閃亮的新表親,對吧?因為沒有歷史遺留問題。它實際上是一個開放的指令集架構,人們在大學裡構建它,他們沒有時間或興趣添加太多垃圾,就像某些架構那樣。所以相對而言,僅僅因為它的血統和年齡,它處於復雜性生命週期的早期。這是一個非常好的指令集,他們做得很好。因此,如果我只是想說我今天是否想要真正快速地構建一台計算機,並且我希望它運行得更快,那麼RISC-V 是最容易選擇的。這是最簡單的一個,它擁有所有正確的功能,它擁有您實際需要優化的正確的前八條指令,而且它沒有太多的垃圾。
IC:所以現代指令集有太多的膨脹,尤其是舊指令集?
JK:已經迭代和添加的指令有太多的膨脹。這就是經常發生的事情。當您不斷添加東西時,工程師會遇到困難。你可以擁有這個非常好的設計,有10個功能,所以你可以給它添加一些功能。這些功能都讓它變得更好,但也讓它變得更加複雜。隨著您的進行,添加的每個新功能都變得更難實現,因為該功能以及其他所有內容的交互都變得很糟糕。
營銷人員和老客戶會說“不要刪除任何東西”,但與此同時,他們都在玩新的新鮮事物,它的作用只有舊事物的70%,但它做得更好因為它沒有所有這些問題。我已經談到收益遞減曲線,收益遞減的原因有很多,但其中之一是事物相互作用的複雜性。它們會減慢你的速度,讓更簡單的東西做得更少實際上會更快。這已經發生了很多次,這是複雜性理論的結果,你知道,我認為是人類的邪惡。
IC:所以你有沒有見過x86 被破壞而某些東西被重新發明的情況?或者它只是保留某種遺產,然後像RISC-V 這樣的新事物會在需要時出現以填補空白?
JK: x86-64是一個相當乾淨的東西,但顯然它必須承載所有這些舊包袱。他們棄用了許多舊的16位模式。有一大堆垃圾消失了,有時如果你小心點,你可以說“我需要支持這個遺產,但它不一定是高性能的,我可以將它與其他東西隔離開來”。你要么效仿它,要么支持它。
我們過去構建的計算機具有前端、獲取、調度、執行、加載存儲和L2 緩存。如果您查看它們之間的邊界,您會看到100 條線在做隨機的事情,這些事情完全取決於它是什麼週期或時鐘的哪個相位。現在這些接口看起來不像指令邊界——如果我從這裡向那裡發送指令,現在我就有了一個協議。所以里面的電腦看起來不像是一堆亂七八糟的東西連接在一起,它看起來就像八台電腦連接在一起做不同的事情。有一個獲取計算機和一個調度計算機,一個執行計算機和一個浮點計算機。如果您正確地執行此操作,則可以更改浮點數而無需觸及任何其他內容。
這與其說是指令集的問題,不如說是“構建它時你的設計原則是什麼”,以及你是如何做到的。問題是,如果您遇到問題,您可以說“如果我可以在這兩個盒子之間使用這五根電線,我就可以解決這個問題”。但是每次這樣做,每次違反抽象層時,都為未來的吉姆製造了一個問題。我已經這樣做了很多次,而且如果你正確地解決它,它仍然是乾淨的,但是在某些時候如果你稍微破解它,那麼隨著時間的推移它會殺死你。
關於摩爾定律的思考
IC:您在舞台上和過去的採訪中都說過,您並不擔心摩爾定律。在工藝節點方面,您不必擔心半導體的發展,它最終會由某個地方的某個人解決。你會說你對摩爾定律的態度是冷漠的嗎?
JK:我非常主動。這根本不是冷漠。就像,我知道很多關於它的細節。人們混淆了一些事情,比如英特爾的10納米滑落。人們都說摩爾定律已經死了,但台積電的路線圖一點也不滑。
部分原因是台積電的路線圖與EUV 機器的可用性保持一致。所以當他們從16nm 到10nm 再到7nm 時,他們做了一些台積電非常擅長的事情——做這半步。所以他們做了沒有EUV 的7nm,有EUV 的7nm,然後沒有EUV 的5nm,和有EUV 的5+nm,他們調整了一些東西。然後使用EUV 機器,有一段時間人們不確定他們是否會工作。但現在ASML 的市值是英特爾的兩倍(實際上是現在,6 月21日)。
然後還有一件有趣的事情——我意識到在創新的地點,我們傾向於將台積電、三星和英特爾視為工藝領導者。但其實領導者實際上是像ASML這樣的設備製造商和材料方面。如果你看看誰在製造創新的東西,以及EUV的全球銷售額,這個數字就像台積電到2023年將購買150台EUV機器或類似的東西。這些數字是驚人的,因為即使在幾年前,也沒有多少人確定EUV會起作用。但是現在出現了X涉嫌光刻機,再說一次,你可以說這是不可能的,但該死的一切都是不可能的!細則,這就是理查德·費曼所說的——他有點聰明。他說“底部有很多空間”,我個人可以數數,如果你看看晶體管中有多少原子,就會發現很多。如果你看看你實際上需要多少個晶體管來形成一個結,沒有太多量子效應,只有10個。所以那裡有空間。
還有一件有趣的事情——當每個人都相信技術正在以這種速度發展並且整個世界都朝著它發展時,就有了一個信念系統。但技術不是一回事。有些人會弄清楚如何製造晶體管,就像英特爾、台積電或三星等工藝設計師所做的那樣。他們使用可以製作特徵的設備,但隨後這些特徵實際上會相互作用,然後在諸如應該如何沉積和蝕刻、應該多高、多寬、在什麼空間之間進行非常有趣的權衡。他們是使用工具的工匠,所以工具必須超級鋒利,工匠必須超級博學。這是一場複雜的比賽。有很多互動,在某種程度上,因為機器本身很複雜,你有一個複雜的組合,機器製造商正在做不同的部分,但他們並不總是完美協調,或者他們通過設計流程的機器集成人員進行協調,這很複雜。它可以減慢速度。但這不是由於物理基礎- 我們在物理基礎方面取得了良好進展。
IC:在你的大規模機器學習演講中,你在Comic Sans 中的演講中,你有打印的X 幻燈片。關於它,你說隨著時間的推移你打印X 的方式,由於物理定律,在EUV 中還有幾個步驟要走。此外,High NA EUV 將在幾年內推出,但現在您提到了X 射線。時間表是什麼?它甚至不在我的知識範圍內。
JK:通常,當一項技術出現時,他們會將其用於一件事。首先,當EUV首次用於DRAM時,它實際上是一步,也許是兩步。所以我試圖記住——也許是2023/2024年?不是那麼遠。這意味著它們已經啟動並運行,並且人們正在使用它。那麼奇怪的是,當他們從光學光到EUV時,波長大約減少了10倍?所以他們雖然他們有瘋狂的多圖案和interference類型的東西,你看到那些DUV的照片,但當談到EUV時,他們可以直接打印。但實際上[隨著你變小]他們可以在EUV上使用相同的技巧。所以EUV將要進行多圖案化,我認為在3nm中。然後你可以用它做很多技巧。
所以是的,物理學真的很有趣。然後還有物理學,光學的東西,然後是材料的純度,這是非常重要的,然後是溫度控制,所以東西不會移動太多。隨處可見有趣的物理問題,因此有很多事情要做。有成千上萬的人在研究它,並且有足夠的創新帶寬。
談如何組件合適的團隊
IC:所以轉向我們曾經遇到的一個流行問題。當你從一家公司走到另一家公司時,我們注意到你所做的一件事是建立團隊的話題。由於團隊是由其他人建立的,我們已經看到有些人將工程師從他們在以前公司建立的團隊帶到下一家公司。你有沒有對你如何建立你的團隊有任何見解?您在這方面工作的公司是否有任何不同的方法?
JK:你首先要意識到的是,你是在組建團隊,還是在尋找一個團隊。所以威尼斯有一個很棒的博物館,大衛博物館,博物館的前面,有這些巨大的大理石塊。20乘20乘20。他們如何移動它們,我不知道。那塊大理石坐在那裡,米開朗基羅可以在裡面看到這座美麗的雕塑。它已經在那裡了,對吧?問題是去除多餘的大理石。
因此,如果您進入擁有1000名員工的公司,我向您保證,那裡有一支優秀的團隊。您不必僱用任何人。當我在AMD時,我幾乎沒有僱用任何人。我們調動了人員,我們部署人員到[其他地方],但那裡有很多優秀的人。當我去特斯拉時,我們不得不從頭開始組建團隊,因為特斯拉沒有人在製造芯片。我僱傭了我認識的人,但後來我們僱傭了一群我在某個時候不認識的人,這是其中一件有趣的事情。
我見過領導者從一家公司轉到另一家公司,他們帶來了20 名員工,然後他們開始嘗試複製他們以前擁有的東西。這是一個壞主意,因為儘管20 人足以重現[你擁有的],但它疏遠了你想要的[在那個新團隊中]。當你組建一個新團隊時,理想情況下,你會得到你真正喜歡的人,要么你剛認識他們,要么和他們一起工作,但你希望在方法和思維上有所不同,因為每個人都進入了局部最低限度。因此,新團隊有機會共同創造新事物。部分原因是因為如果你有十個非常棒的團隊都工作得很好,然後你組建了一個新團隊,每個團隊都有一個人:那可能會更好,因為他們會重新選擇哪些是最好的想法.
但是每個團隊都有優點和缺點,所以你必須考慮你是在組建團隊還是在尋找一個團隊,然後你試圖創造什麼樣的動態,為人們提供新想法的空間。或者,如果有些人堅持一個想法,然後他們與新人合作,他們會開始做這件不可思議的事情,你認為他們很棒,即使他們過去並不那麼棒,那發生了什麼?好吧,他們帶著一些不太好的想法,然後他們遇到了挑戰他們或環境強迫他們的人,突然之間他們做得很好。我已經看到這種情況發生了很多次。
Digital (DEC) 的Ken Olson 說沒有不好的員工,只有不好的員工工作匹配。年輕的時候,我覺得那是愚蠢的。但隨著我與更多人一起工作,我看到這種情況發生了太多次,我甚至解雇了後來真正成功的人。都是因為他們沒有做好工作,他們在情感上陷入困境,他們覺得自己致力於一些不起作用的事情。將他們轉移到不同地方的行為使他們解放了出來。[不用說]我沒有得到感謝。(笑)
IC:那麼其中有多少也歸結為公司文化?我的意思是,當你在為合適的職位尋找合適的人選時,或者你是否正在招聘新職位時,你是否試圖得到一些與公司宗旨背道而馳的東西?還是隨公司走?你在這裡有什麼策略還是只是在尋找有天賦的人?
JK:如果你正在嘗試做一些真正具有創新性的事情,那可能主要是與[the grain]背道而馳。如果你的項目進展得非常好,那麼引入煽動者會讓每個人都慢下來,因為你已經做得很好了。您必須閱讀環境中的組。然後有些人非常優秀,他們在這個項目上非常靈活,他們適應並且只是推動,但是在下一個項目中,你可以看到他們一直在建立他們的網絡和團隊,等等下一個項目,他們準備做一個支點,每個人都願意工作。信任是一件很有趣的事情,對吧?你知道,如果有人走上前說跳下這座橋但你會沒事的,你可能會說胡說八道——但如果你已經和他們一起經歷了一大堆事情,他們說’看,相信我,然後跳下去——你會沒事的;它會很糟糕,但它會沒事的’,你會做到的,對吧?相互信任的團隊比那些必須處理合同、談判和政治事務的團隊更有效。
所以這可能是一件事——如果你正在建立或尋找一個團隊,並且你開始看到人們參與政治,這意味著為了自己的利益操縱環境,他們必須離開。除非你是老闆!然後你必須看看他們是否交付。有些人非常政治化,但他們真的認為他們的政治力量來自於傳遞。但是在一個政治組織中隨意的人只會造成很大的壓力。
IC:您是否建議職業生涯早期或中期的工程師應該定期從一個項目跳到另一個項目,以免陷入困境?聽起來這是很常見的事情。
JK:當你在做新的事情,並為比你更了解的人工作時,你學得最快。因此,如果您的職業生涯相對較早,並且沒有學到很多東西,或者您知道,您為之工作的人沒有激勵您,那麼是的,您可能應該改變。在某些職業中,我看到人們因為獲得經驗而跳了三圈,但最終卻一無所獲。他們會更好地呆在原地,真正深入了解某事。所以你知道,創造性的緊張——這兩個想法之間存在著創造性的緊張。