Jim Keller訪談:傳奇架構師的芯片之路

如果您希望可以時常見面,歡迎標星收藏哦~

引言

Jim Keller,作爲全球最著名的CPU架構師之一,在過去幾十年中爲多個領先的處理器設計做出了卓越貢獻。他不僅在AMD、Intel、Broadcom、Apple、Tesla等世界頂尖科技公司中擔任過重要職務,還在SiByte、P.A. Semi等初創公司待過,後創辦了Tenstorrent AI芯片初創公司,深刻影響了現代計算機硬件的進步。

在去年與計算機博物館的一場訪談中,Jim Keller爲我們回顧了他從一個普通家庭成長起來,逐漸加入半導體行業,輾轉多家知名半導體芯片公司,到躬身創辦RISC-V AI芯片公司Tenstorrent的歷程。他分享了自己的童年、家人的影響,以及在職業生涯中如何通過不懈努力和創新精神,面對一次次技術挑戰,突破自我、改變世界。

讓我們從這段訪談中,一起走進Jim Keller的傳奇人生,探尋這位CPU架構師背後的故事。

訪談實錄

Jim Keller的家庭和成長背景

Fairbairn:我是 Doug Fairbairn,今天我們有幸採訪 Jim Keller,他是著名的 CPU 架構師,並且在過去幾十年中爲許多處理器設計做出了貢獻,除此之外,他還有其他衆多貢獻和成就。Jim,歡迎你,非常高興能請到你。

Keller:好的,謝謝,很高興能來到這裡。

Fairbairn:正如我所說的,讓我們從頭開始。告訴我你在哪裡出生,是什麼時候出生的,你的早期家庭生活是怎樣的,你的父母是做什麼的?你成長時的家庭環境如何?

Keller:嗯,我出生在新澤西州,我的父親在 GE Aerospace 工作,他們有一個項目會把員工調動到不同的地方。所以他從印第安納州開始,然後是馬薩諸塞州的 Lynn,再到費城,最後他們在賓夕法尼亞州的 Valley Forge 建了一個大工廠。我們家離 GE Aerospace 的 Valley Forge 辦公室只有三分鐘車程。我是家裡六個孩子中的第二個,我的父親是機械工程師,設計衛星。我母親是她大學的畢業生代表,她曾經接受過成爲教師的培訓,她非常聰明,但在我小時候,大部分時間都在家裡照顧我們六個孩子,她沒有工作。後來她成爲了一名治療師,並且在那方面非常成功。但是作爲孩子時,她是全職媽媽,我在一個充滿孩子的家庭中長大,我們六個孩子的年齡相差不遠。

Fairbairn:你父親有工程背景,這對你有影響嗎?他和你一起做過項目嗎?你們有做過類似的事情嗎?

Keller:是的,我父親非常擅長描述和畫出任何東西。所以我是在一個這樣的家庭中長大的——他會下班回家,說:“哦,我看到了一座橋,來,我給你畫一下”,然後他會迅速畫出整座橋,告訴我它爲什麼能工作,爲什麼不能工作。我就這樣長大,認爲這就是生活的常態。我的父母也都參加了讀書俱樂部,家裡到處都是書,他們非常重視智力對話。總的來說,他們是非常聰明的人。他們還有一個家庭朋友在一次家庭旅行中和我聊天,當時我們交換了車,顯然我和他聊了好幾個小時。

我父親的朋友告訴他,我是他見過的最聰明的孩子之一。我提到這件事是因爲,後來我被診斷爲閱讀障礙,我直到三年級或四年級才真正學會閱讀,而我的父母從來不擔心我。所以他們認爲,“哦,他沒事,只是按自己的方式理解而已。”我想在現代社會,這會引發恐慌。你的孩子在二年級仍然不會讀書。但這從來沒有影響我。在二年級的時候,我注意到我在那羣書本中拿的是字母特別大的書,而不是那些小字母的書,但這並沒有太大影響。後來,我偶爾會學會一些東西。我記得在三年級快結束時,我學會了讀書,突然間,我能夠讀書了,書本變得有趣起來,我開始讀了很多書。

Fairbairn:所以,雖然學讀書的過程對你來說比較慢,但你最終成爲了一個熱衷於閱讀的人。

Keller:我變成了一個讀者,但從來不是寫作者。我寫作總是很困難。我大多能滔滔不絕地說話,但如果能看到整頁的文字,我就能把它們寫下來。我想,也許在文本編輯和反覆修改的世界裡,這樣會更好。但作爲一個孩子,寫作總是很痛苦的。但是數學就不一樣——他們稱之爲“情節學習”。我記得我們在學習長除法的時候,我一開始沒有理解,直到有一天我突然明白了,感覺就像是“哦,他們是在猜”,然後我就一下子懂了,接着代數也是一樣,“F(x) = 什麼。”我根本不知道他們在說什麼,我想我整整一年的代數課上都在想,“我不知道他們在說什麼。”然後它就變成了“哦,這是符號”,然後我就明白了。所以,我有這些瞬間的頓悟。但作爲一個孩子,我總是在做自己的事情,學校對我來說只是從做其他事情中抽出的時間。

Fairbairn:那麼,你有五個兄弟姐妹。有人走上了技術的道路嗎?

Keller:我的姐姐是機械工程師,我的弟弟是計算機科學家,非常非常優秀,我的兄弟姐妹們都很聰明。不過,我們中還有一個治療師,一個社會學家,一個哲學教授——我們各自做了不同的事情。

Fairbairn:有趣的家庭。那麼,你在高中階段是怎麼發展的?有沒有什麼特別的老師,或者是其他什麼人,給你指引了方向或激發了興趣?

Keller:是的,我有幾位非常優秀的老師。我上的是位於費城地區的一個相當大的郊區高中。我們有一位教微積分的數學老師,他每次做特別演講時,都會穿上他的好西裝,戴上五彩斑斕的領帶,搞得很隆重。所以,積分學的基本定理就是一個盛大的事件。他會用多色粉筆,他是一個非常有個性的老師,而我們學校的其他一些老師就基本很差,我們幾乎什麼都沒學到。在我們的學校,我們基本上是放任自流的。考勤是自願的,我的朋友是學生會主席,我們班通過賣足球比賽的小吃賺了很多錢。我們覺得自己好像是在學校之外運作的。對一個孩子來說,那是一個非常狂野的地方。後來,校長被解僱了,我的弟弟說,“我上的是完全不同的高中。”

Fairbairn:這些學生得收拾一下了,是吧?

在賓夕法尼亞州立大學求學

Keller:是的。60年代末期這個國家經歷了相當動盪的時期,我長大後,常常通過電視瞭解我的叔叔們是否死於越南戰爭,這對我來說是相當創傷性的。然後70年代是那個時期的後果,我開始上高中,既有好的一面也有壞的一面。正如我所說,我遇到了幾位非常棒的老師——我的幾何老師就非常棒。我還有兩位化學老師,安娜·弗爾科夫人,我至今還記得她教我們化學計量學,她是一個了不起的老師,然而,其他一些老師就好像不關心我們。我們不去上課,似乎沒人注意到。我高中畢業時拿到了B,幾乎沒有什麼計劃,唯一的理由是我喜歡的一個女孩上街去上賓夕法尼亞州立大學。所以,我就申請了。

Fairbairn:啊,這就是你去賓夕法尼亞州立大學的原因,對吧?

Keller:嗯,確實有一個有趣的事件。高中最後一年,我被學生輔導員叫去了。當時,在高年級結束時,會有人注意到你是否要上大學,而現在,他們從小學開始就開始準備了。

Fairbairn:提前好幾年。

Keller:她說:“你是個非常聰明的孩子,你應該去麻省理工學院(MIT)。你聽說過MIT嗎?”我想我模糊地聽說過MIT。我當時想:“不,我不想搬到波士頓。”然後她給我了一份按薪水排序的工作清單。那個時候,大學畢業生薪水最高的是化學工程,其次是石油工程,然後是機械工程,最後是電氣工程。我覺得前兩者看起來很傻。所以,我在機械和電氣工程之間擲了一枚硬幣。但是我的祖父是電工,每次我們去看他時,他的家裡總是充滿了電動機、洗衣機和各種各樣的雜物。我覺得那些東西很神奇,所以我隨機選擇了電氣工程,因爲它薪水高。

我畫了一條線,把生物學、物理學、海洋學這些都放在了線的下面。如果你問我大學時想學什麼,所有的選擇都在那條線下面。但我覺得上大學不選一個能掙錢的專業會很傻,而我的祖父是電工,我覺得這挺有趣的。所以,我報了賓夕法尼亞州立大學,成功被電氣工程專業錄取了。我打電話告訴我祖父,他說:“注意你的功率因數。” 這指的是電動機中電流與電壓之間的角度。所以,這就是我走上工程道路的整個故事。

Fairbairn:就這樣走上了這條路。那麼,當你選修電氣工程時,重點是微電子學嗎?是電動機方面的嗎?

Keller:不是,不是。

Fairbairn:那你的教育重點是什麼?

Keller:我上過一門Fortran課程,上一門邏輯設計課。當時,賓夕法尼亞州立大學——1976年——有一個非常好的電氣工程系,大概有600到700名學生。

Fairbairn:很大。

Keller:是的,很大。他們開設了核心課程。你第一年學的是數學、物理和選修課程。我當時還雙修哲學,挺有趣的,數學課很棒。機械工程課程——那些是淘汰課程,我記得學到如何解加速旋轉參考系的題目時,我覺得太神奇了,我真的很喜歡大學生活。我覺得第一年花了一段時間纔跟上節奏。因爲在高中,我們總是胡鬧,儘管我有很好的老師,但我們不需要認真學習。第一年我一開始成績不錯,但到學年結束時,我的成績已經很差了。我的父親說,如果我真打算在大學裡掛科,那我應該在夏天好好考慮一下這個問題。因爲比起浪費學費,他認爲我可以去找個工作,而我當時想:“我纔不會在大學掛科呢。” 所以,剩下的時間我表現得很好。

Keller:嗯,我小時候讀了很多書,對各種思想非常感興趣。所以,我雙修了哲學專業。關於這個有個有趣的故事。在我大二時,電氣工程系收到了一封哲學系主任的信,說他們想見我。我挺興奮的,心想:“哇,系主任來找我了。”然後他跟我說:“我們從來沒有遇到過像你這樣的學生,真的是。哲學專業里根本沒有電氣工程(EE)的學生。我只是想給你看一件事。”然後他給我看了一篇哲學學生寫的論文。他說:“這是期中考試。”那篇文章大約五頁,寫得很漂亮,雙倍行距,兩面寫完。然後他拿出了我的考試成績,基本上就是半頁,裡面有很多劃掉的部分。他說:“我根本看不懂,吉姆,我不知道你寫了什麼。”然後他說:“我們哲學專業的學生寫作很多,我去問了你的老師,他們都覺得你很棒。但我得告訴你,你永遠也無法從賓夕法尼亞州立大學獲得哲學學位。不過,你可以上任何你想上的課,你總是能拿B。”所以,我就被哲學系“開除”了,因爲我在考試環境下寫不出一篇段落。這事挺好笑的。但我還是選修了很多哲學課,真的覺得那是個很有趣的經歷。

Fairbairn:這個故事挺有趣的。那麼,你完成學業之後,有什麼想法嗎?你當時是怎麼打算的?

Keller:嗯,在賓夕法尼亞州立大學,我直到大二才真正開始學習電氣工程,因爲當時課程安排是這樣的。我在電氣工程學科得了全A。事實上,在哲學教授之後,電氣工程系的主任打來電話,我當時想:“天啊,我是不是要被電氣工程系開除了?這不能發生第二次吧。”但他卻說:“我只是想見見你。我們學校沒有多少學生能拿到全A。”我說:“嗯,我確實很努力。”他說:“顯而易見。”我真正喜歡的方向是電磁場理論。但我的導師是喬·斯塔克博士,他是半導體小組的負責人。IBM曾捐贈給賓州大學一個2英寸的晶圓廠。所以,在我大四時,我上了一些非常有趣的半導體課程——我們在實驗室裡製作晶體管,甚至是6微米的晶體管。我至今還記得關於氟化氫(HF)的安全簡報。我的大四課程主要集中在半導體上。當時我想自己會成爲一個射頻(RF)工程師,但這真的很有趣。然後,我上了一門編程課程,我覺得那非常有趣。那時是打孔卡Fortran編程,我還上了一門邏輯設計課程,我覺得那也很有意思。

Fairbairn:有意思?

Keller:它沒有深入到很深的層次,但能從如此簡單的東西構建任何東西,真的是很驚人。電磁場理論很複雜,幾乎所有東西都變得幾乎不可計算。即使是相對簡單的天線和驅動設備,也變得非常難做了。如今,我們爲這些東西建造了非常複雜的模擬器。所以,簡單的方程式很酷,但它們的應用很快就遇到了計算壁壘。而材料科學就更難了。這是我在賓夕法尼亞州立大學最喜歡的課程,因爲教授很棒,材料科學的描述語言也非常精彩。但在書本里,所有的問題最終都變成了簡單方程的曲線擬合,因爲氫原子以外的任何東西都是無法解決的,這對我來說是一個很有趣的哲學性科學基礎問題。然後就是邏輯設計,這從邏輯設計到應用的跨度非常小,基本上就是Karnaugh圖,這很簡單,但它背後實際上非常奇妙。

所以我並不完全確定自己要做什麼。然後我面試了很多工作,主要是在半導體公司——Fairchild、摩托羅拉。但我也隨機去佛羅里達州的哈里斯公司面試,我覺得我可以住在海灘上,去衝浪。他們有一個非常酷的計算機項目,是把光纖和高速數據寫入薄膜結合起來,他們需要一個邏輯設計師,所以我就接了這個工作。

Fairbairn:所以,環境和工作本身都讓你覺得這是個不錯的選擇。

Keller:是的。然後我的老闆是個讀書人,他有一書架的書,都是我小時候讀過的書,我們聊得非常愉快。後來,事實證明,他在我被僱用後不久就被解僱了。當我到達公司時,他們簡直不知道該讓我做什麼。他們問:“你來這裡幹什麼?”我拿出了一封信,上面寫着:“8月15日來上班。”他們說:“嗯,大學生都是6月開始工作的。”我就說:“是啊,但我從大洋彼岸開車過來了。”我和招聘人員談妥了這個事,他們也表示“不知道。”於是,他們給了我一個工牌和一個辦公桌,過了幾天,有人走過來說:“我們有一堆測試設備需要修理。”於是,我就花了一年半時間修東西,結果挺好的。

Fairbairn:所以你當時並沒有接觸到計算機設計?

Keller:他們確實有一些帶微處理器的電路板,但它們都壞了。他們還爲佛羅里達電力公司設計了一個遙控器,也沒有做成。還有一些其他隨機項目,我就是個忙碌的年輕人。

Fairbairn:這些項目是別人設計過但還是沒弄成功的嗎?他們解決不了問題嗎?

Keller:是的,我被分配到一個小組,他們有很多基本的邏輯設計問題需要解決,我做了一些邏輯設計的工作,但大部分時間我都在修東西。我做過一塊高頻電路板,40MHz的STTL電路板,用於爲光纖發射器編碼數據,但它也沒能成功。所以,這就是我第一份電氣工程的工作,我們需要修復地面平面,修復很多東西,才讓它正常工作。這份工作讓我後來被數字設備公司(DEC)錄用了。

Fairbairn:那麼,你是怎麼找到去數字設備公司(Digital Equipment)的機會的?你當時在佛羅里達衝浪...

入職第一家半導體公司Digital Equipment

Keller:有一天,我在《EE Times》上看到了一則招聘廣告。我想回到北方,我的家人在費城,波士頓也很近。於是,我就看到了這則廣告,招的是一名時鐘設計師,來自一個我從未聽說過的公司,叫做數字設備公司(Digital Equipment)。所以我在去之前一天去雷神公司(Raytheon)面試了一下,練習一下,因爲我好久沒面試了,他們當場給了我一個offer,不過我拒絕了。他們爲我的機票買單,所以他們挺生氣的。

Fairbairn:他們支付了你的差旅費用。

Keller:是的,這件事很有意思,然後他們問我:“你有打算在這裡工作嗎?”我說:“如果你們不像現在這樣待我,我肯定會的。”這件事挺好笑的,後來我去了數字公司,他們當時需要一名高頻時鐘設計師,雖然很快他們發現我對這方面並不懂多少,但他們還是僱用了我,挺不錯的。

Fairbairn:那麼,他們把你分配到了哪個小組?

Keller:我在VAX 8800小組工作。組長是Bob Stewart,他曾是[PDP] 11/44、11/70、VAX 780和8800的架構師之一,所以他是數字公司最優秀的計算機架構師之一。我在一個做緩存子系統的團隊工作,做邏輯設計,嗯,我當時就...

Fairbairn:你當時根本不懂計算機架構或緩存之類的東西吧?

Keller:沒錯。於是一個朋友在我坐飛機之前給了我11/70和780的手冊,我就在飛機上讀了這些手冊。基本上,我進公司後跟每個和我聊的人說:“我有很多問題”,然後我就拿着這些手冊問他們:“你們爲什麼要這樣做?這個是幹什麼的?”我當時挺自信的,他們幾乎不知道該如何應對我,他們說:“我們從來沒見過像你這樣的人。”所以,我就得到了這份工作,工作了大約七年。

Fairbairn:你在[VAX] 8800上工作?

Keller:是的,8800之後有兩個後續型號,不幸的是這兩個型號因爲政治原因和技術問題都被取消了。但我做得還不錯,做了很多邏輯設計和電路板設計。那時是ECL(發射極耦合邏輯)計算機,所以有電氣設計、電路板設計、邏輯設計,後來我開始思考計算機架構和CAD工具,自己在晚上寫了一個邏輯模擬器和時序驗證器,做了幾個較大的軟件項目,實際上那並不是我的工作。

Fairbairn:他們那時候有類似的東西嗎?

Keller:有的。我們買了一個來自硅谷的初創公司,叫做Valid,他們做了一個繪圖系統,並配有一個時序驗證器。這個系統還行,但使用起來挺麻煩。然後數字公司有一個模擬器小組,他們的模擬器很全面但速度很慢。有一次,我在和Bob Stewart、Jay Grady一起工作時,認識了一些人,比如Forest Baskett和Butler Lampson,我們在給Butler解釋邏輯模擬器是怎麼工作的時,他就站起來在白板上寫了:“你應該這樣做,如果這樣做的話會快很多。”於是我就按照他的方法寫了一個邏輯模擬器,打電話告訴他多快了,他說:“聽起來差不多,幹得不錯。”

Fairbairn:那是 Butler。

Keller:是的。他——是的,我認爲他沒有做很多實施工作,但他可以思考得非常快。

Fairbairn:不,他告訴所有人應該怎麼做,然後每個人都按照他說的去做。

Keller:是的。這完全就是發生的事情。我還遇到了 Chuck Thacker,他是另一位偉大的架構師,他們一直在關注我,因爲我有點特別。但我在他們……的時候遇到了這些人。

Fairbairn:是的。當我在那裡工作,研究 Alto 的時候,他們在 Xerox PARC。

Keller:是的。所以,Chuck 和 Butler 在 System Research Lab,然後 Jeremy Dion 和 Alan Eustace 以及我遇到的一羣人在 Western Research Lab,它們實際上就在街對面。但它們是 Digital 的兩個研究派系,我不知怎麼地認識了他們兩個。

Fairbairn:你和 Dan Dobberpuhl 一起工作過嗎?

Keller:是的。

Fairbairn:他是直接參與其中,還是你們的關係如何?

Keller:我在 Digital 大約工作了 15 年。前半部分是在一箇中檔系統組,做 ECL 設計,大型計算機,然後我在大約 89 或 90 年加入了半導體組。我在 Western Research Lab 工作了六個月,在那裡我遇到了 Norm Jouppi,然後和 Alan Eustace 以及一些人一起研究 BIPS 計算機,它……

Fairbairn:在這裡,在硅谷?

Keller:是的,在 Palo Alto,然後當我回去時,Pete Bannon 在半導體組找到了一份工作,他說“你應該來這裡”,然後我們成爲了 EV5 的共同架構師,這是第二款 Alpha 芯片。所以,Dan 做了第一款 Alpha 芯片,EV4,我們做了後續產品,然後 Dan 在某個時候搬到了加利福尼亞,爲 Digital 組建了 ARM 團隊,也就是 StrongARM 團隊。所以我很瞭解他。我們經常交談。但我沒有在 Digital 直接和他一起工作。

Fairbairn:他是我們非常努力想做口述歷史的對象之一,但在他去世前我們並未成功。所以,我很想知道你對他的回憶,他的...

Keller:是的,他確實很了不起。當第一代Alpha芯片推出時,它的頻率是166MHz茲,後來到200MHz茲,這個頻率比任何之前的處理器要快三到四倍。Dan的桌子總是這樣大,上面堆滿了電路圖,高得幾乎要遮住整個桌子,我就問他:“你怎麼找到需要的東西?”他說:“只要你不動它,我可以找到任何東西。”然後他會從一年前的電路圖中找出一張,說:“這是怎麼做的,那個是怎麼做的,”就這樣。

Fairbairn:那回到你最初在ECL-8800上的項目,你負責的最大項目是什麼?你是領導某個領域嗎?你的職責是什麼?

Keller:是的,在ECL-8800上,我實際上是一個電路板設計師和邏輯設計師。所以我做了總線接口,構建了別人給出的規格的邏輯設計。後來,我開始和其中一個團隊合作,做性能模型架構,因爲Pete和我成了調試計算機的“專家”。

Fairbairn:Pete...

Keller:Pete Bannon。他是一個微編碼員,我是邏輯設計師。當我們在實驗室給機器通電時,很多人都在場,但我們基本上在實驗室住了一年,調試所有東西,運行所有軟件。隨着軟件逐步啓動,做性能建模的人也想要嘗試並運行一些東西。然後一些東西按預期工作,但有些東西明顯不行。Pete重新寫了很多固件,整個過程中,我學到了很多關於計算機是如何從頭到尾構建的。當做一個I/O板的那個人辭職時,他們需要人來接替,我就把整個電路圖集過了一遍,成了負責調試那部分的人。然後我們交付了公司內部的前十臺機器,安裝在操作系統小組中。當他們啓動軟件並開始加載時,機器開始崩潰,我們又去調試它。

Fairbairn:那段時間你從8800項目中學到了什麼?從這段經歷中,你有沒有形成一些關於“這是正確的做法,那個是錯誤的做法,我們需要更好的工具”之類的看法?從那個項目中你有哪些收穫?

Keller:一開始,一切都像是一堆零件:“這裡有一個部分,這裡有一個部分,這裡有一個部分。”但是後來,Bob Stewart基本上在CISC機器中早早就實現了一個RISC流水線。所以,我們有了解碼階段、指令獲取、解碼、寄存器讀取、執行、數據緩存查找和回寫。VAX-8800有一個相當簡潔的RISC流水線,前面有一兩個額外階段來解碼CISC指令,但它們作爲微操作來執行。一開始我不明白這意味着什麼,但到項目結束時,我知道了流水線是什麼,知道了分支預測失敗的代價,因爲那時候我們沒有分支預測器。所以,分支走錯了方向時,我們只好刷新流水線。知道了什麼是緩存。所以,基本上,這三年就像是架構101課程。到我結束這個項目時,我知道了緩存如何工作,分支如何工作,指令解碼器如何工作。VAX的架構有點複雜,因爲我們有多個權限級別的架構,還需要處理中斷,有些重指令由微代碼執行。那部分工作都完成了。

然後是接下來的項目——Argonaut,基本架構加倍時鐘頻率。從中我學到的是,我們把時鐘頻率推得比技術本身能支持的更遠,結果讓構建變得非常困難,而且那時候的分析工具也非常差。於是我就開始參與寫CAD工具。最初是時序驗證器,後來是模擬器,我們在多個項目中都用到了這個工具。到最後,我雖然沒有寫性能模型,但我們做了一個性能項目:我們把VAX-8800的一個電路板改造,用來記錄所有微程序計數器地址和其他信息。然後Doug Clark寫了一篇論文,標題是《VAX計算機是如何花費時間的》,我爲這項目貢獻了硬件,Pete寫了微代碼,Doug做了高層分析。這就像是將這些不斷變化的部分,轉化成一臺擁有流水線特性的計算機,最終變成一臺因爲合理的時間分配而具備性能的計算機。當我加入Alpha團隊時,Pete和我從零開始爲EV5寫了性能模型,這是我們第一次在計算機設計中,以架構規格和性能模型爲基礎,轉化成芯片的經驗。

Fairbairn:這期間,編譯器組有參與嗎?

Keller:有的。編譯器組非常關注高質量的編譯。這裡有一個有趣的過程。在CISC時代,大家會說:“我的計算機更好,因爲我有更多的指令。”然後到了編譯器時代,人們會說:“我們的編譯器更好,因爲它可靠,穩定,不會有內存泄漏。”之後,RISC派系出現,他們在系統研究實驗室(SRC)建立了Titan,那是一臺RISC機器,基本上是在VAX-8800項目的尾期出現的。Titan的板子是VAX-8800的一半,體積是它的四分之一,性能卻更好,而且它更簡單,沒有權限架構,也不是多處理器架構。它的設計理念是:“這臺計算機非常簡單,建造編譯器更容易,而且編譯器也有助於性能。”這是一大轉折,因爲直到那時,編譯器更多是在提供功能和質量,而不是在提供性能。當我們過渡到Alpha時,Alpha團隊有一個內部研究小組專門做編譯器性能工作,編譯器組有時候會從性能理念轉化到生產編譯器的過程,但這在數字公司花了幾年才實現,並且最終非常成功。

Fairbairn:所以你對Titan的觀察,以及由此得出的結果,後來影響了你自己的方向,你能看到兩者之間的不同嗎?

Keller:嗯,這個有點難說。Bob Stewart相信將硬件做得儘可能簡單,Titan確實朝着這個方向走。但當我們做EV時,比如說EV4是雙發射,今天我們會稱之爲超流水線設計。

Fairbairn:EV4?

Keller:EV4是第一款Alpha芯片。

Fairbairn:哦,明白了。

Keller:然後EV5是四發射的,增加了更多的流水線,配備了多級片上緩存,這可能是一個錯誤。但要填滿四發射的順序機器,你真的需要編譯器的優化才行。這時,關於是編譯器帶來更多性能,還是硬件來實現性能的爭論開始了。

EV6是第三款Alpha芯片。Dirk Meyer和我一起設計了它,那是我們設計的第一款亂序機器。我們的設想是,軟件能提供一個基線性能,比如說1倍,隨着編譯器的改進,可以提高到1.5倍。有人說:“我們只要繼續提升編譯器。”但當時編譯器的搜索空間已經變得非常龐大。VLIW項目大多數都沒能成功,因爲它們需要投入大量資源,而亂序設計則成爲了獲取高性能的方式。但當我們設計EV6時,仍然有爭論是否能構建出一臺高性能的亂序計算機並使其正常工作。雖然已經有一些簡單的亂序機器問世,但EV6是四發射、20條指令窗口、100條指令在飛行中的機器,超出了我們當時簡單思考的能力。現在來看,這種設計已經算是相對簡單的了。但那時,這是一個很大的轉變。到了1996年,我已經工作了16年。

Fairbairn:是的,你已經深深嵌入其中了...

Keller:是的,EV5是我第一次在架構設計上的大突破,我和Pete一起做的。我們學到了很多。完成後,它是有史以來最快的計算機,或者說最快的微處理器,但我也有些尷尬,因爲它的缺點我清楚得很,幾乎不敢談論它。那是一個有趣的個人經歷,因爲儘管它其實挺好,且參與其中的團隊也非常優秀,但我知道每一個出錯的地方。

所以,EV6時,我們從零開始重寫了性能模型的架構。Alan Eustace——我描述過我們寫的性能模型。那是30,000行代碼,包含了各種複雜的東西,他說:“Jim,我寫了一個只有1,000行代碼的性能模型。”我說:“什麼?爲什麼代碼這麼少?你到底做錯了什麼?”那一刻,我感覺像是被重擊了一樣,“我怎麼搞砸得這麼嚴重?”所以,我重新寫了EV6的性能模型。它的第一版是1,100行代碼。之後,我幾乎一週不睡覺,最終把它壓縮到了1,000行,能夠解析Alpha架構、處理所有追蹤信息、運行亂序模型(不包括內存系統)並讓它工作。我給Alan打電話:“我做到了,1,000行代碼。”我說,“我還是不知道你是怎麼做到的。”他說:“看,Jim,我從來沒做過,但我知道你有多競爭心強。我覺得如果給你設定一個更高的目標,你可能會做得更好。”他說:“30,000行代碼對我來說簡直瘋了。”那真是挺好笑的。但這讓我重新思考了如何構建性能模型,真正深刻地去思考它。在此之前,我們寫模型是爲了探索一些想法,而不是把它當成一個有價值、能理解、能清晰使用的工具。然後Dirk和我互相討論,他會拿着模型說,“我要加這個加那個”,他就去重寫代碼,他編程的水平遠超我。

Fairbairn:那EV6是DEC的終結嗎?

Keller:是的。

Fairbairn:對你和公司來說,我想是吧。

加入AMD公司

Keller:是的。當我們把芯片流片時,Dirk去了AMD,最終領導了K7的開發併成爲了CEO。我一直待到Unix系統在多個芯片上運行起來,然後加入他一起做K8。之後他們做了一個後續項目叫EV7,它是EV6核心的一些調整,但主要加了使用Rambus的片上內存控制器。他們用EV7做了一臺128處理器的計算機。我記得這可能是在Compaq收購公司之後才完成的。大概在我加入AMD三個月後,Compaq收購了Digital Equipment。但Pete完成了EV7的開發,並且留在了那兒。

Fairbairn:那你去了AMD?你那時候的朋友已經在那裡,招你來一起做下一代產品了?

Keller:對的。我當時是爲Atiq Raza工作,他是COO。幾年前,AMD收購了NextGen,他們的586處理器變成了K6。AMD以前的286、386、486基本是Intel處理器的“掩模複製”。K5是AMD設計的第一款處理器,雖然它成功了,但也有很多困難。接着他們收購了NextGen,因爲他們已經在生產586處理器,並把它改進成了K6。Dirk領導了K7項目,我參與了其中,之後我開始了K8項目。

Fairbairn:那K7和K8的目標是什麼?就是下一代x86處理器嗎?

Keller:是的,可以這麼說。K7在架構上和我們設計的EV6有些相似,但它有宏指令架構,用於拆解x86操作。當時我們認爲必須這樣做——在RISC機器中,你有加載指令、存儲指令、加法指令和分支指令,它們是分開的。但在x86中,一條指令可能包含加載操作數、寄存器操作數、存儲操作數,然後某些指令會深入到微代碼中。當時有爭論,是不是應該獲取宏指令然後拆解,還是應該先拆解再發出微操作?K7在整數運算上採用了宏指令架構。但它的緩存系統和總線接口基本上是從Digital授權過來的,實際上就是EV6的總線設計。

到了K8,我們的設計目標是讓它更加偏向微操作架構,並且我們還決定支持64位。所以,我對這個架構的最大貢獻之一是作爲x86-64規格、HyperTransport規格(無縫多處理器架構)的主要作者之一,並對芯片架構做了重大更新,最終它成爲了Opteron。後來,在1999年我離開了,加入了一些創業公司,正值創業熱潮。

在初創公司SiByte的經歷

Fairbairn:是的,那你在這段時間裡是在爲Atiq工作嗎?

Keller:是的,我當時是爲Atiq工作,然後Atiq離開了,我也離開了,和一個朋友一起創辦了一家公司,資金由Atiq提供,但結果他不能繼續那個項目。所以後來我加入了Dan Dobberpuhl,在SiByte工作。

Fairbairn:那Atiq創辦的公司是什麼?

Keller:我甚至不知道它有沒有名字。Atiq當時正處於資助創業公司的狀態,我們本來打算開發一個網絡處理器並且開發一個CPU。我在AMD待了三年,我們確實完成了64位規格、HyperTransport規格,並且爲所謂的多核芯片打下了基礎,那個時候我們做得還挺不錯的。

Fairbairn:然後你去了SiByte,Dan Dobberpuhl在那兒,是嗎?

Keller:對,他是CEO。

Fairbairn:所以他招你過去了。

Keller:是的,然後我就開始了...

Fairbairn:那是一個不同類型的處理器,對吧?

Keller:對。那是一個MIPS處理器,然後我們開發了一個網絡SoC。它包含千兆以太網控制器、內存控制器、處理器和一些加速功能。我們和成百上千的網絡公司進行了交流,那時我認識了Andy Bechtolsheim和Cisco的幾位人,他們幾乎直接在餐巾紙上畫出圖來告訴我們,“你們做出這個處理器,Cisco就會買。”我們最終做出了那個芯片,真的非常有趣。那是一個非常小的團隊,最後這家公司被Broadcom收購了。

Fairbairn:那裡面有其他DEC的老同事嗎?

Keller:有的。團隊裡有DEC的成員,也有一些Sun的人,還有一堆來自各個地方的貢獻者,Intel也有不少。

Fairbairn:那團隊有多大?

Keller:我想最鼎盛的時候有125到130人,然後我在SiByte待了一年半左右,之後加入Broadcom,整個過程我大概在那兒待了四到五年。

Fairbairn:回到AMD,你現在已經工作過一種完全不同的指令集了,但你說你從DEC的架構中複製了一些經驗。那麼你從AMD學到了什麼?你之前提到過自己在以前的設計中犯了很多錯誤...

Keller:哦,是的,確實有很多錯誤。其實我曾在微處理器論壇上做過一場關於EV6的演講,那非常有趣,因爲在我之前演講的分別是Power4的負責人、HP的PA RISC團隊的人,還有Sun的成員,而IBM的人特別搞笑,他說:“天啊,我得在你們之後發言,真不敢相信。我們的處理器太差了。”Power4的架構確實很酷,但它的頻率很低,而且是由多個芯片構成的。

Fairbairn:Power4是哪個公司的?

Keller:IBM。

Fairbairn:哦,明白了。

Keller:然後HP的芯片功耗非常高,架構也挺有意思的。我開始演講時說:“我來這裡要談論的是世界上最快、最大、最強的芯片,但我發現它只是最快。”因爲IBM的芯片超級大,而HP的芯片功耗極高。但在Digital,我們幾乎是從晶體管級別開始設計的。設計本身幾乎每個芯片都有150個原理圖,我們有一種叫做宏模塊的設計,它可以是一個晶體管的集合,你可以把它重複多次使用。我們有一個小型的單元庫,但有一次我們發現芯片裡竟然有26種不同的觸發器,很多都是由人手工製作的,我們曾經開玩笑說我們的庫裡有兩種東西,N型器件和NP型器件。

Fairbairn:所以你們在晶體管級別進行了優化。

Keller:對的,但事實證明這完全不可擴展。在AMD,他們有一套非常好的標準單元方法,可以編寫RTL代碼,然後將其轉化爲門電路,並且以一種不會失去太多性能的方式佈置這些門電路,而且這些門電路是經過表徵的,這真是太了不起了。你可以想一想,在計算機設計中,有多少個抽象層次?因爲最底層是原子,然後是晶體管,它們是摻雜的器件,再然後是金屬堆疊,而在Digital,我們就是在那個層級進行設計的。然後是標準單元,再往上是CAD工具來擺放單元,最後你纔有RTL和綜合。理解計算機設計是一個層層嵌套的抽象集合,每一層都很複雜,而且每一層都很重要,在某個層次上,每一層都會做一些權衡,但也能讓你做更大的事情。嗯,這是一次重大的事件。

Fairbairn:所以你發現了這個方法論。AMD有這些工具嗎?

Keller:一些工具做得相當不錯,然而有些工具就不那麼好了。他們自己寫了很多的佈局工具。我的一個朋友曾說,他感覺自己像個“人肉合成器”。也就是說,你得把RTL拿出來,然後真的得爲所有關鍵的部分畫出門電路。現在我們總是讓合成工具來做這些工作。嗯,那真是一段很奇妙的旅程。

Fairbairn:那麼,回到SiByte,你們開發的處理器,DEC的經驗有直接應用嗎?你需要學習一些新的東西來進入面向網絡的處理器領域嗎?

Keller:在 SiByte,我們仍然——所以,DEC 的人仍然非常相信定製設計。它可能設計得過於定製化,但對晶體管非常友好。比如,我們真的自己製造……

Fairbairn:與……稱兄道弟。

Keller:是的。我們自己製造了 PCI Express PHY。比如,購買庫和 PHY 的想法在當時簡直是——就像,被認爲是瘋狂的。但我們交付了產品,我認爲我在 SiByte 學到的東西是,我與很多客戶交談,看到了很多網絡設備,其中很多都有秘密。比如,他們正在做這種新的特殊網絡盒子,我會和他們談兩個小時,然後從他們說的話中逆向工程他們所做的一切。這給了我一種,可以說,對這類系統設計如何結合在一起的元理解,然後在某個時候我意識到有多聰明——比如,我們正在構建的芯片實際上部分是來自一些高層人員的直接指令,部分是與很多人交談,討論如何製造他們都想要的部件。嵌入式業務很奇怪,因爲如果你把每個人都想要的東西都放進去,它就會太貴,沒人能負擔得起。但如果你錯過了重要的東西,沒人會買它,因爲他們無法使用它。嵌入式世界的訣竅是在足夠多的東西使其成爲一個很棒的部件,但又不是太多東西使其愚蠢地昂貴之間找到最佳點,這是一件非常奇怪的事情。這幾乎就像一個附帶項目——我們認爲從 Digital 到 AMD,就像在處理器設計中一樣,這是一條路,而這就像另一種系統工程,但事實證明它對我來說非常有趣。所以,這非常有趣。

Fairbairn:所以,你學到了很多關於應用程序的知識。

Keller:是的,然後在 Broadcom,我遇到了 Henry Samueli。他也是一位天才,我曾經和他一起旅行,我們會去和新客戶交談,我會做我的 SiByte 推銷,我也瞭解其他兩個產品,他會聽,大約到了第三天,他說“讓我來吧”,然後在他聽了三次之後,他對我們的部分進行了更好的演講,比我做的要好。他是個有點狂野的角色。

Fairbairn:所以,你在大公司工作過,DEC、AMD,現在 SiByte 基本上是一家初創公司,但是……

Keller:是的,然後 P.A. Semi 也是一家初創公司。

Fairbairn:對你來說有影響嗎?

Keller:嗯,VAX-8800項目和Alpha項目當時也是小團隊。雖然公司很大,但團隊只有100人左右,所以團隊的動態是非常特別的。我曾有一個理論和一些數據支持,認爲大概需要400人四年,300人三年,200人兩年,100人一年半。但後來Itanium用了800人,最終還是完成了那個計算機項目。後來我發現,實際上有一部分人從管理層中脫離出來,最終完成了這個項目。也就是說,團隊太大時,管理層往往會對最終交付產生影響。

Fairbairn:那麼AMD的團隊比較大,是吧?或者說你回到AMD之後,第二輪的團隊規模才變大?

Keller:對的,回到AMD時,CPU團隊大約有500人,但他們負責多個項目,包括Bulldozer核心、Jaguar核心,還有一些團隊負責芯片縮小和將處理器用於遊戲主機部分,並且還有一個Fabric團隊。

在博通的工作經歷

Fairbairn:明白了。那麼,回到Broadcom,你在這個新的應用領域中學到了什麼?你開始接觸到全新的處理器應用空間,對吧?

Keller:是的。Henry Nicholas 相信真正擁有平臺。所以,你要製造一臺網絡計算機。有數據平面部分、控制平面部分,有 NIC。所有這些不同的部分組合在一起,一個接一個地,它們加不起來。它們不是真正的產品,但整個系統是一個產品,然後訣竅是如何構建它,才能讓多個人滿意?是的,細節如此之多,真的很有趣,當時的networking分爲以太網世界和 SONET 世界。一個是廉價傳輸,一個是保證帶寬分配和保證延遲,然後隨着時間的推移,這些功能融合在一起,網絡也建立在抽象層上,即著名的七層網絡堆棧。是的,能和這些人在一起,並參與所有這些工作,真是一次偉大的工程之旅,然後還有這種關於物理的好奇之處。當我開始時,20 MHz,100 MHz是一個非常高的頻率,我仍然記得看到第一個 10 GHz示波器,我當時想“到底發生了什麼?我們怎麼會從 100 MHz很難到 10 GHz甚至可能?”現在,我們有 112 GHz的 SARD1,而且,同樣,有很多層因素促成了這種情況,我可以看到它們。

我知道封裝是如何工作的,引線鍵合和電感器。我曾經是一個電磁場方面的人,這簡直是個奇蹟,而且我親眼目睹了它隨着時間的推移而進化。我和 Henry Samueli 談過,比如,“我們什麼時候才能擁有千兆無線網絡?”他基本上做了計算。他真的只是坐在那裡做了計算。“好吧,這是晶體管性能曲線的斜率,這是器件的尺寸和封裝的幾何形狀,這是投資。如果你想在這裡做,那將花費一萬億美元。但如果你等五年,那將花費 1000 億美元,這是曲線的走向,我預測 5G 會在 2018 年出現”,而這實際上就是它發生的時間。對他來說,就像“好吧,這些都是形狀,推動帶寬——有模擬信號帶寬,但也有編碼符號帶寬”,這是一個空間。這是一個設計空間,然後它下面還有一些參數在移動,比如“這是半導體的發展方向。這是封裝的發展方向。這是編碼的工作方式。”他有一個計劃。就像“你在開玩笑吧。

Fairbairn:“這就是未來,這就是我們將要做的,這些是需要完成的步驟。”

Keller:嗯,你知道,著名的摩爾定律。當我們建造 VAX-8800 的時候,我們並不知道摩爾定律。在 Digital 內部,也許 Gordon Bell 知道,或者其他人知道。但我們製造的 VAX-8800 比 VAX-11/780 更快,因爲客戶想要更高的性能。但當時並沒有“這是摩爾定律預測的曲線,如果你在曲線之上,你就能賺錢,如果你在曲線之下,你就會賠錢”這樣的說法。80 年代並不是這樣,然後 RISC 就出現了……

Fairbairn:這是針對半導體行業的人說的,而不是針對系統行業的人說的。

Keller:是的。你可以設計一臺計算機。比如,VAX-8800 是由計算機架構師使用門陣列芯片和一些定製芯片作爲組件設計的,以實現我們建造這臺計算機的目標。而在 Alpha 團隊,他們製造了晶體管,真的需要用它們做一些事情,當時晶體管的任務是讓晶體管更小、更快,在芯片上放置更多的晶體管。然後 Dan 的天才觀察是,如果你正確地構建流水線、電路技術和時鐘網絡,你可以讓晶體管以基本全速運行,然後你不要在流水線上推得太遠,因爲那樣邏輯設計就會崩潰。但如果你把時鐘、觸發器和鎖存器以及所有工具都做對了,你就可以在半微米技術中製造出 200 兆赫的處理器,當你回頭看時,你會覺得“發生了什麼?這太神奇了。”

在P.A. Semi的從業經歷

Fairbairn:那麼,我們來談談 P.A. Semi。從……過渡到那裡是一個很大的轉變。

Keller:嗯,它最初是作爲 SiByte 的重啓開始的。我們獲得了 PowerPC 的架構許可,這是一個漫長的過程。然後……

Fairbairn:其他創始人是誰?我是說,你是創始人嗎?是……

Keller:有來自 SiByte 的最初三位創始人,他們是高級創始人,然後還有我們另外五個人。

Fairbairn:包括 Dan 嗎?

Keller:是的,Dan Dobberpuhl、Amarjit Gill、Leo Joseph 是創始人,然後 Puneet Kumar、Mark Hader、我自己、Sribalan Santhanam 也算是創始人,但我認爲我們並不是真正的高級創始人,或者像文檔中那樣……

Fairbairn:我明白了。

Keller:可以說是有層次的。所以,最初的想法是“讓我們做一個類似的部分,但對一切進行升級。”比如,1GHz的處理器升級到10GHz,處理器性能也得到了提升。它是一個亂序的PowerPC核心,架構設計更加激進,以便我們能夠進行數據流操作。爲了使性能得以實現,你必須將數據從10GHz端口傳入,進入片上緩存或內存,進行處理而不需要訪問外部內存,然後再把它送回出去。所以,它在架構上是一個更爲激進的設計。到了某個時候,它還被設計成一種方式,既有處理器區域,也有前瞻性切片、內存控制器、PCI Express和網絡相關的通用部分,然後還有網絡加速部分。我們設計了一個部件,可以有兩種流片方式。一種是作爲網絡處理器,供思科(Cisco)等公司使用。但你也可以將它作爲獨立部件進行構建,這個部件可以是蘋果的個人電腦部件。我們也與蘋果進行了不少討論……

Fairbairn: 所以,我以爲P.A. Semi的一個主要目標是降低功耗。是這樣嗎——還是我記錯了?

Keller:Dan是做低功耗的,因爲他參與了StrongARM項目,然後所有的網絡相關的同事,他們有很多箱子,散熱有限。25瓦的功耗,你可以把部件放在板上,直接吹風就行。50瓦的功耗,就需要加散熱片,把它放到合適的位置。功耗再高的話,事情就會迅速變得複雜起來。之後,我們有一些低功耗的電路設計技巧,團隊在時鐘門控和低功耗方面做得非常好,而且非常精確的時鐘分發,我認爲這比行業標準還要好。按今天的標準來看,這個設計並不算低功耗,但在當時,它實際上是相當不錯的。

Fairbairn: 所以,目標是性能,但同時儘量降低功耗?

Keller:是的。在網絡處理器領域,目標是性能,但同時還要達到某些功耗標準,這樣才能正確部署它,就像是一個系統工程問題一樣。PC領域的功耗優化已經變得更加精細。所以,桌面部件的功耗是95瓦,因爲這很容易通過風扇來散熱。桌面領域的目標是儘可能快。移動領域一旦進入,就開始權衡封裝上的熱點和電池壽命,而當時的移動部件也開始變得可行。它們的功耗仍然是25瓦到35瓦。

Fairbairn: 那麼,P.A. Semi最終有沒有開始銷售部件,還是……

Keller:這家公司被蘋果收購了。

Fairbairn: 在它實際開始銷售部件之前?

Keller:我們流片出了一個能工作的部件,但公司被收購了。

加入蘋果公司

Fairbairn: 你是在P.A. Semi之前離開的,還是先去了蘋果,然後……

Keller:是的,我們完成了那個部件,流片後我加入了蘋果,然後蘋果——接下來發生了一個有趣的情況,三星和蘋果合作,要打造一個1GHz的ARM處理器。我曾經和一個人一起工作過——三星和數字設備公司(Digital Equipment)合作,他們打造了叫做EV56和EV68的處理器,這些是蘋果芯片在三星代工廠的縮小版。負責這個項目的人打電話給我,尋求我的幫助來使這款1GHz的處理器工作,我說:“我已經在蘋果工作了,但你應該找丹(Dan),丹會幫你搞定這件事”,因爲他們需要一個大客戶,算是這樣吧。然後丹搞清楚了事情的真相。他打電話給史蒂夫·喬布斯(Steve Jobs),說:“爲什麼我要幫助三星,你可以直接收購我的公司,我們可以直接爲你們做。”於是蘋果收購了P.A. Semi。

Fairbairn: 那你是怎麼來到蘋果的?

Keller:我在蘋果有一些朋友,他們在一個研究小組裡,說:“你應該來做點有趣的事情。”我問:“我做什麼?”他們說:“我們不能告訴你。”然後有一段時間,我記得我走了很長一段路,穿過了三扇鎖着的門纔到我的辦公室,因爲蘋果非常喜歡保密,部分是爲了戲劇性,部分是——史蒂夫不希望這個項目干擾到那個項目,就像是“你做你的事,你做你的事,你做你的事。”

Fairbairn: 那麼,拉你去蘋果的那些人,是從數字設備公司來的還是……

Keller:對,我曾和Dave Conroy一起工作。他在數字設備公司(DEC)的系統研究實驗室工作,和Chuck Thacker一起合作,他後來加入了蘋果,成爲他們的計算機大師之一。我還遇到了一些其他的人。我在想,除了Dave,我還認識誰呢?哦,Steve Polzin是另一個來自數字系統組的人,他在Mac工程部門工作。所以,我加入蘋果時,認識的基本上只有三個人。

Fairbairn: 那時蘋果的處理器設計狀況是怎樣的?我不太記得了——這是在……

Keller:對,所以我加入了——第一個iPhone芯片。

Fairbairn: 2009年?

Keller:是的,大概是那時候。是2009年嗎?

Fairbairn: 2008年?

Keller:對。第一個iPhone已經開始發貨,他們實際上距離第二款芯片——內部叫做H2——的流片只有幾周時間……

Fairbairn: 那個芯片是——第一個芯片是基於ARM架構的……

Keller:是的,基於ARM架構,ARM的IP。第一個芯片實際上——他自稱是架構師的人,給我看了架構文檔,實際上就是一份Excel表格,列出了他需要的所有IP。所以他說:“我需要這個CPU,這個內存控制器,這個總線……”就只是IP的一個列表。

Fairbairn: 所以他把一堆IP組合在一起,然後……

Keller:對,然後他們把這個交給了三星,三星把它們組裝成一個芯片,結果是可行的。內存延遲很糟糕,性能也很弱,他們幾乎沒法讓軟件在上面運行,但軟件工程師們設法讓它工作了。他們做得非常棒,因爲他們基本上把OS X縮小到可以在這個平臺上運行,通過這樣做,他們優化並最小化了軟件。所以後來當我們給他們更快的芯片時,軟件就可以真正地擴展了。有人說,iOS和Android之間最大的區別是,Android是在手機芯片已經相當不錯的時候被移植過去的,而且它從未像iOS那樣被精簡過,這可能是真的。

所以,我開始參與H2的工作,然後Tim Millet和我共同設計了H3,我們對其進行了大量優化,H4是我們首次在芯片中放入一個真正強大的圖形單元,而H5是P.A. Semi團隊交付的第一款處理器,叫做Swift,H6則是我和Gerard Williams設計的,實際上是蘋果自那時以來一直在構建的一個大規模亂序計算機。

Fairbairn: 那在之前,是否只是執行一些已經知道的架構之類的,只是把功耗降低並使其在這種環境下工作?

Keller:嗯,最初的手機SSE(單指令流處理器)設計相當簡單。你可以這樣理解:你有一個無線接口,一個顯示接口,一個鍵盤接口,還有一個運行操作系統的處理器。還有一個小GPU來渲染屏幕。就像這些架構圖,紙上這一大塊,裡面有一堆模塊和互聯連接。因此,手機芯片的架構自一開始以來大體上都很簡單。讓它們,嗯,可以說是“神奇”的地方,實際上是達成每瓦性能和功耗的平衡,而蘋果則非常積極地推出新技術。

所以,我們比任何人都先推出了64位技術。我們比任何人都先做了高分辨率顯示。我們在H4中加入了大量圖形性能。就像它完全超出了任何人之前做過的事情。如果你看這款芯片,GPU的尺寸比其他任何手機芯片中的GPU大五倍,而這其中有一部分是來自Steve Jobs和Mike Culbert的想法,Steve有個理念:要做出最好的技術,就需要最好的組件——要做出最好的產品,就需要最好的技術和最好的組件。然後蘋果的團隊,在他們真正開始投入觸摸屏和視覺應用時,極力推崇像高分辨率、大量圖形性能之類的技術。圖形性能是爲了計算機界面服務,而不是僅僅爲了遊戲服務。蘋果從來不是一家遊戲公司。

Fairbairn: 爲了實現這些目標,架構上有什麼獨特的方面嗎?還是說只是對現有架構進行優化和調整?

Keller:是的,有一些。比如,我們爲各種東西設計了硬件部件。蘋果的UI設計方式是多層次的。我們的顯示管道做了非常酷的合成。在較低的層次上,GPU、CPU和相機處理器的協同工作,在當時是相當新穎的。不過,大部分還是在於真正地看清目標並對準它,然後,蘋果通過設計自己的芯片,避免了支付那些中間商的利潤。我們直接從三星購買晶圓,後來是從臺積電,而不是通過高通或英偉達購買。那些公司是從臺積電買晶圓,然後還得加價。所以,蘋果能夠把額外的成本轉化爲更多的晶體管,我們確實做到了。

Fairbairn: 所以,這實際上並不是簡單地提高了利潤率,而是你們能夠製造更大的芯片,並且更具成本效益……

Keller:對。以同樣的成本,我們可以在蘋果手機的芯片中放入兩倍的晶體管。我們的一些競爭對手——然後軟件應用和處理器的共同演進也發生了變化。我們做出的優化選擇讓我們能夠做到一些事情——如果你說“嘿,大家都想要這個很棒的相機處理器嗎?”一個人說“是”,另一個人說“不”,那你就放一箇中等水平的相機處理器,因爲你不能通過它賺錢。而蘋果一直都知道自己想要什麼,而且是專門設計的。

Fairbairn: 對。所以你們能真正優化設計。你們有更多的晶體管可以使用。那麼,工具、設計方法論方面,蘋果是否有一些獨特的東西,其他地方沒有?

Keller:這是那種新團隊常常能做老團隊做不到的事情之一。所以,隨着蘋果設計團隊的成長,我們有來自各個地方的人——來自NVIDIA、Intel、AMD的小公司——然後在某個時候,當我們在做方法論的工作時,不再是迭代之前五年大家都在用的設計方法,而是“從不同方法論中選擇最好的特性”。有一段時間,我認爲我們可能擁有行業中最好的設計方法論,因爲它融合了來自不同地方不同思想的人,就像我喜歡說的,混合基因,這非常好。

Fairbairn: 那Steve Jobs是否一直在你們的工作中發揮作用,還是……

Keller:不,他是一個隱形的存在。我和他交談過幾次。每個人都知道Steve第二天想要什麼,真是不可思議。我的老闆經常和他交談。

Fairbairn: 誰是你的老闆?

Keller:Mike Culbert,他是蘋果的非正式CTO。我們認爲他是這樣的人,然後我們還和Bob一起工作——他是Mac工程的技術負責人,後來負責手機和芯片工程。他是我合作過的最出色的高級副總裁之一,看着這些人如何把Steve想要的東西轉化成現實,真是非常有趣。他們經常和他溝通,確保達成Steve的要求,整個公司基本上是以願景驅動的,有很多方向感,但並不是——Steve並不是一個微觀管理者。

Fairbairn: 不是如何做,而是……

Keller:對,他不是如何做的。他是“這是我想要的,你們能做什麼?”“告訴我你們能做什麼,然後我們看看能從中做出什麼。”所以,是的,這真的是一次很瘋狂的經歷。

Fairbairn: 那你爲什麼離開了?

重回AMD

Keller:Steve Jobs去世了,Mike也去世了。是的,我知道那將會是一個完全不同的地方,我去蘋果部分是爲了學習東西。蘋果是一個了不起的公司,我記得在那待了大約一年後,我想“我還是不太明白他們是怎麼做事的。”因爲它不是那種我在數字設備公司、AMD以及和Dan一起做創業時所習慣的那種自下而上的工程文化。蘋果更多的是“我想做這個,我們會做一切來實現它,”而不是“我們是偉大的工程師,知道如何製造電腦。”

Fairbairn: “我們告訴你你得到什麼。”

Keller:“我們告訴你你得到什麼。”是的。我想去一個能夠通過意圖從無到有創造東西的地方,那是一個瘋狂的工作環境,也很棒。但我覺得我學到了很多,我也想試一試其他的東西。所以,我去了AMD,那時候它正處於困境中。

Fairbairn: 那是誰把你帶回到AMD的?

Keller:Rory Read。

Fairbairn: 他那時是CEO嗎?

Keller:對。我認識Mark Papermaster。在P.A. Semi做PowerPC談判時我就認識了Mark,然後我們大概重疊了一年左右,當時他來負責手機部門,後來Steve因爲天線門事件把他炒了。但Mark是個很好的人。所以,當我在尋找新機會時,我給Mark打了個電話,接着和Rory聊了很多,我挺喜歡Rory的,然後我爲Mark工作。Rory說:“我負責業務,你負責技術。我會確保我們不缺錢,但我需要這顆芯片。”

Fairbairn: 那時候AMD的目標是什麼——當時AMD狀況不好,對吧?

Keller:是的,情況很糟糕。

Fairbairn: 那目標就是設計一款芯片。是從零開始設計的嗎?

Keller:對,沒錯。

Fairbairn: 在這個行業中,什麼都不算是完全從零開始,但……

Keller:嗯,Rory給我展示了一張圖。AMD的服務器,Opteron最初從零開始,市場份額從35%降到了大約4%。他說:“Jim,發生了什麼?”我說:“嗯,產品很糟糕,所以沒人買。”他回答說:“看起來好像沒人關心。”結果是,Bulldozer並不是一個好的架構,而且它當時還在開發中。

Fairbairn: Bulldozer是Opteron的架構嗎?

Keller:是的。嗯,不,Bulldozer是在後來的架構。K6的團隊提出了一個很棒的基於單元的方法論,我們在此基礎上開發了K7和K8,也就是Opteron。然後他們想要進一步提升頻率,邁上一個新臺階,結果他們實際上帶回了很多定製設計,加入了一些有爭議的架構特性。那兩件事沒有實現他們的頻率目標,而架構特性也不好。所以,這就造成了一個不具競爭力的產品,而AMD當時還在與代工廠鬥爭,最終將其剝離,成立了Global Foundries。於是他們揹負了一個二流代工廠和一個二流架構。我被帶進來當Zen架構的設計師,並負責重建這一切。

Fairbairn: 那當時是否很清楚需要做什麼?

Keller:哦,是的,完全清楚。方法論不好,團隊組織不好,架構不好。然後團隊會跟我說:“Jim,我們無法與Intel競爭,因爲我們的工藝落後。”我就說:“其實,Intel的IPC是我們的兩倍,我告訴你,如果我們能追上他們的IPC,我能幫我們找到一個匹配的工藝。但如果IPC不好,你就不能怪工藝。”

Fairbairn: IPC是……

Keller:每個時鐘週期的指令數。

Fairbairn: 每個時鐘週期。

Keller:所以,有一個架構方面的因素,還有一個工藝方面的因素。在某種程度上,工藝是推動一切的。所以,IPC就是你架構的好壞,然後架構與工藝性能結合,最終決定了產品的性能。而我們在這兩方面都存在問題。至於怎麼獲得一個好的工藝,我當時沒有頭緒。Mark是關鍵人物,他們和三星14nm的Global Foundries談判達成了交叉許可,這有效果。後來,Rory的合同中提到,AMD將繼續在Global Foundries生產,只要Global Foundries能夠提供具有競爭力的領先工藝。然後,Global Foundries宣佈他們不會做七納米工藝了。

Fairbairn: 對,他們確實在這方面後退了,是吧?

Keller:是的,AMD當時最終可以轉到臺積電去生產,但確實是一個巨大的挑戰。於是,我給Rory打了電話,說:“你介意我取消所有當前的項目嗎?”這也算是解開了Zen的束縛。他們有一個Bulldozer路線圖,還有一個Jaguar路線圖,分別是大核心和小核心,但它們都沒有競爭力。Jaguar其實做得不錯,但沒人購買那類產品。Bulldozer和Jaguar這些處理器在很多方面都不具競爭力,Rory當時說:“Jim,沒人關心我們是競爭對手的50%還是53%,他們只是因爲可憐我們纔買。”於是,他基本上對我說,“做你想做的事。”然後他會打電話給我:“需要多久?”我說:“四年。”他說:“我沒那麼多時間,”然後董事會也沒有再支持他,最後他離開了。

但是,這個過程非常有趣,部分原因是架構上的調整。從架構上講,有很多大方向的決定——比如,我們有一份表格,寫明瞭“你需要多少個每時鐘週期的指令,什麼樣的分支預測器,什麼樣的頻率。”我們設定了一個邊界框,團隊不斷嘗試重新談判這些限制。我給出的要求是10平方毫米,5瓦功耗,3.5GHz頻率,但他們會回來告訴我:“我們可以做到10毫米,但只能做到3GHz。”我就說:“沒門。”

這個任務的核心是把問題轉化爲我們可以解決的差距,而不是一些無法完成的任務,最終大部分都實現了。後來我們還做了一個ARM處理器,作爲架構上的配套,因爲當時有一個信念認爲ARM服務器會成爲主流。我認爲這有可能是真的,但在當時,ARM在服務器領域還是有點早。然後我們交付了幾個其他產品,包括一個Xbox芯片和一個索尼遊戲主機芯片。

Fairbairn: 那你說四年太長了,最後你們做了多久?

Keller:是的,最終確實花了四年。

Fairbairn: 四年。那麼,Lisa Su是在這段過程中作爲CEO加入的嗎?

Keller:是的。當時她負責一個業務單元,主要是ARM服務器和半定製業務。在我在那裡時,她大部分時間都在做這個工作,而她並沒有參與Zen項目。

Fairbairn: 那麼你決定離開是什麼時候?是項目完成或接近完成的時候嗎?

Keller:大部分都完成了,但可以說當時有一些管理上的困難。我其實並不想離開,但……

Fairbairn: 你是什麼原因決定離開的?

Keller:我其實並不想離開,但不是所有事情都會如你所願。我算是一個比較直率的人,喜歡事情按照我希望的方式進行——很難說清楚。我當時正處於一個階段,我知道怎麼去構建一切,事情變得非常明確。

Fairbairn:那就去Intel了嗎?

Keller:不是,去了Tesla。

加入Tesla

Fairbairn:Tesla,嗯。

Keller:嗯,Doug Field 曾在蘋果的 Mac 團隊工作,後來去了 Tesla,我和他聊過。然後,Raj Singh 和另一個曾爲 Doug 工作的人,他們說:“你應該來這裡。”我當時問:“我能做什麼?你們是造車的。”他說:“不不,車會變成一個計算平臺,未來一切都會有計算機。”我當時覺得“太搞笑了”,然後我開始做研究——像是,Tesla 當時已經有了自動駕駛的計劃,而且顯然 Elon 那時就已經有些名氣了。所以,我去找 Doug 和一幫人聊了下,大家說:“來吧,你也可以做做電子方面的工作。”

於是,我們需要升級自動駕駛硬件,做一些事情,我當時想“天哪,我們可以爲這個做一顆芯片。”他們當時用的芯片不好,沒能達到預期目標。接着,他們安排了和 Elon 的面試。我飛到洛杉磯去見他,在 SpaceX,他帶我路過一個會議室,是一個 Landsat 會議室。我父親曾是 Landsat 項目的首席工程師,那個項目是一個衛星,後來還有火箭發射。我小時候見過一次 Saturn V 火箭的發射,所以,Elon 和我聊起了 Saturn V 火箭和 Landsat,我們聊得挺愉快的。我告訴他,我可以在18個月內做出一顆能驅動汽車的計算機芯片,他基本上說:“好的。”

Fairbairn: 18個月?

Keller:對,18個月。

Fairbairn: 18個月?

Keller:是的,18個月,我們做到了,簡直是世界紀錄。

Fairbairn: 那是——你們用的是TSMC的技術嗎?

Keller:其實我們用的是三星的技術。於是,我就接受了這個工作,沒告訴任何人。離開AMD的塵埃還沒完全落定。然後有一天,我的朋友Pete Bannon給我打電話,是聖誕節前或聖誕節後打的,他說:“嘿,我聽說你要去特斯拉?”我問他:“你怎麼知道的?”他說:“你老婆在你寄給朋友的聖誕信裡寫的。”我說:“我大概是1月5號左右開始。”他就說:“那好吧,我們聊聊吧。”然後他那天晚上就來找我聊了兩個小時,他當時還在蘋果,特別對他們的AI方向感到失望。於是我就加入了特斯拉,沒過三天,Pete就和Elon面試了,Elon說:“Pete很棒。”然後我僱了Keith Witek,他是個律師,因爲我們要在18個月內做出這顆芯片,我需要執行大約35項IP合同、供應協議,各種各樣的事。於是,我給我在蘋果時合作過的三星朋友打電話,說:“我要做這顆芯片,明年我們得完成Tape Out。”他們說:“這太難了。”

最終花了 14 個月完成流片,4 個月在工廠,2 個月啓動軟件,然後我們就開上了車。Pete 對 AI 引擎有一個非常酷的想法。當時,一個流行的框架叫做 CAFE,它輸出一個 op、data、data、data 的列表,然後人們拿着它構建一個編譯器,在其上編寫一個向量化編譯器,Pete 說“如果我們只是按原樣執行 op 和 data 呢?”我們製造了一個基本上將 CAFE 指令作爲指令執行的芯片。數據可能是三乘三的卷積數據源或其他什麼,它有很多有趣的方式來遍歷它,我們構建了一個內存子系統來調整數據,以匹配 CAFE 認爲它正在執行的內容,這使得編譯器非常簡單。所以,世界上每個人都在僱傭數百人來編寫 AI 編譯器,而 Pete 自己編寫了編譯器,因爲從 CAFE 輸出到指令輸出的轉換,可以說,相對簡單。最終還有一些更詳細的內容。這給了我們一個架構定義,然後我從各個地方僱傭了一些朋友來構建引擎,然後三星製造了芯片。

Fairbairn:在 14 個月內完成它的關鍵是什麼,完成 IP 合同,以及每一步都進行優化?

Keller:每一步都進行優化。就像並行執行。到那時,我已經非常擅長——我告訴人們我是 100% 的人。所以,你有一個——有一個 AI 引擎,一個與之配套的編譯器,還有 IP 合同。我們有一個非常好的 SoC [片上系統] 架構師,David Glasco。Dan Bailey 從 AMD 加入了我,他是地球上最好的芯片專家之一。三星的執行團隊,我認識那些人。我們很快就把他們組織起來了。我們很快就做出了決定,比如安全架構、安全架構、總線架構。我們花了一點時間在攝像頭處理上。當時,AI 圖像都由攝像頭處理器處理,但我們不確定這是一個好答案。我們對一些軟件堆棧組件不確定。我們不得不導入一堆東西。所以,我們使用了我們自己的 GPU。

Fairbairn:那麼,特斯拉仍然使用相同的架構嗎?

Keller:所以,Hardware 3 大約在九個月前停止發貨。他們發貨了近五年。它是地球上最好的自動駕駛芯片,持續了五年。現在,他們正在發貨 Hardware 4,這是一個升級版。它們有架構上的相似之處。當我還在特斯拉時,我們就開始了那個項目,但我不知道它最終的細節。

Fairbairn:那麼,你和 Elon 一路上有很多互動嗎,或者根本沒有?

Keller:是的。他每週有兩天在那裡,我們一直和他談話。然後我負責自動駕駛硬件,在某個時候,Doug 要求我負責低壓電子設備,然後自動駕駛軟件人員時不時地向我彙報,這取決於最近誰被僱傭或解僱。所以,可以說,這很戲劇化。

Fairbairn:Elon 是否想插入他自己關於事情應該如何做的想法,或者理解架構,以及……

Keller:是的。在某種程度上,他不是一個芯片專家。他寫過軟件。他非常擅長物理、機械工程和可視化事物。關於很多芯片方面的東西,我會向他解釋。他會非常感興趣,但他沒有很多關於這方面的想法。但是關於整個事情如何運作以及爲什麼,是的,他真的很有興趣,向他解釋這些很有趣。我學到——在很多地方,你從“這是問題陳述,這是數據”開始,然後引導人們完成你的旅程。Elon 是一個先解決問題的人。“我們將要做這件事。那是因爲我們遇到了這個問題。其他一切都是支持。”有一天,我們向他展示。“這是我們晚上拍攝的圖像。這是正在發生的事情。這就是爲什麼它們很難……”他簡直要瘋了,就像“你們在說什麼?”“好吧,我們馬上就要講到解決方案了。”“好吧,解決方案是什麼?”“在第 18 頁。”“好吧,從第 18 頁開始。你們怎麼了?”就像“這是舊照片。這是新照片。”他說“太棒了。新照片好多了。爲什麼更好?”“哦,我們倒着講一遍吧。”他的直率很棒。就像,當他談論第一性原理時,我以前說過。就像,你認爲你是一個堅持第一性原理的人,然後你和 Elon 談話,你會覺得,不,不,他指的是原子。就像,第一性原理是完全另一個層次的。

Fairbairn:是的。那麼,是什麼讓你離開那裡的?

Keller:我們完成了 Hardware 3,開始了 Dojo,但我很清楚,這還需要一段時間……所以,Elon 是一個大步前進的人,可以說芯片工程師,有一個節奏和持續改進的路線圖,我想——我不確定在流片之前我要做什麼兩三年。所以,Hardware 3 到 Hardware 4,你可以從論文中讀到。你可以在論文中讀到。它們相隔四到五年。就我而言,我們計劃在 Hardware 3 之後一年流片 Hardware 4,並進行穩步改進。但像 Elon 更像是一個“邁出一大步。充分利用它,邁出一大步”,這也有道理。但我認爲“嗯,我想要一些新的刺激。”然後我收到了 Intel 的高級副總裁的 offer,負責他們的芯片工程團隊,我認爲這會很瘋狂,因爲 Intel 擁有最好的工廠、最好的 CPU 技術、最好的——他們有 cross-point 內存,他們有很多東西。我認爲我們可以去開發下一代高端服務器。但任何——這一切都沒有發生,但這是一份非常有趣的工作。

Fairbairn:是什麼讓它變得有趣?

Keller:當我離開 AMD 時,團隊有 2500 人。特斯拉有 400 或 500 人。我加入了 AMD,我的團隊有 10000 人。

Fairbairn:你加入了 Intel?

加入英特爾公司

Keller:是的,Intel 有 10000 人,它的範圍非常大——客戶端部件、服務器部件和網絡部件,然後我慢慢發現,很多 Intel 技術都很棒,但很多都停留在舊的 CAD 工具、舊的設計流程上,而且……

Fairbairn:是的。Intel 的設計工具確實陷入了困境,不是嗎?

Keller:是的。所以,就像“我們如何重新設計一個如此龐大的組織,使其正確地定位?”他們做了一些事情,比如——他們過去製造集成的客戶端部件。所以,CPU 團隊、內存控制器團隊、PCI Express 團隊,他們都爲同一個人工作,他們都一起工作,他們製造了一個部件。然後 EVP Murthy [Renduchintala] 說“我們需要有 IP 團隊、SOC 團隊和 CPU 團隊”,然後他把他們分開了。但它從未真正重構。比如,IP 團隊並不是真正的 IP。IP 只是一個設計組,負責向 SoC 交付東西,然後進行測試。所以,他們有所有這些像半過渡的東西,挑戰是“你如何重新設計它並修復 CAD 工具?”我接到了 Aart de Geus 的電話,他說“以色列團隊正在使用我們的新 CAD 工具。你們是怎麼做到的?”我說,“經過了很多爭鬥。”但這很有趣。那些人很棒。他們創造了地球上最好的設計流程,並使用了 25 年。很難說世界已經改變,變革即將到來,就像“這會怎麼發生?”有些人會說“嘿,我們準備好了”,有些人顯然,它是——人們非常情緒化。比如,工程師們一生都在建造東西。

Fairbairn:Intel 仍然有一個龐大的內部 CAD 團隊,對吧?

Keller:是的,1200 人,其中很多人只是在工具周圍構建包裝器。所以,我們引入了我們稱爲裸機流程的東西,即如何爲所有 CAD 工具構建低級接口?我們如何改變我們對 CAD 工具的看法?其中一些效果相當不錯。

創辦Tenstorrent AI公司

Fairbairn:Tenstorrent。

Keller:是的。所以,Tenstorrent 是一家 AI 公司。

Fairbairn:那麼,你是如何——你在 Intel 的 10000 人團隊中筋疲力盡了嗎,或者是什麼……

Keller:不。在高層面上。我認爲公司和工程團隊需要,可以說,比 CEO 做的更大的重置,我非常喜歡 Bob Swan。我們是同事,但他對需要做什麼的願景和我的願景相差甚遠。我沒有筋疲力盡。我是……

Fairbairn:你無法完成你想完成的事情?

Keller:這非常困難,我瞭解到你需要與——CEO 經營一家公司,你不能去開會說“我們需要這樣做”,然後他們會說“CEO 說了相反的話”,他有他的理由。他負責公司的財務管理,而我則關注一大堆需要相當大的改進的關鍵工程技術。這比你能做的要多,比如說,只是順便做一下。在 AMD,和 Rory 以及我,就像“我們需要從頭開始徹底改造它”,他說“太棒了,去吧,因爲現在發生的事情不起作用。”所以,這效果很好。在 Intel,效果不太好。所以,我想去一家初創公司工作。我想過創辦一家公司。我一直是 Tenstorrent 的天使投資人。我喜歡特斯拉的 AI 技術。我有機會看到所有 AI……

Fairbairn:特斯拉是你第一次真正接觸到 AI 技術的內部嗎?

Keller:是的。即使在那裡,我也不是 AI 引擎的架構師。Pete 是。我設計了構建自動駕駛芯片的計劃,而且,我認爲我非常擅長跨職能邊界工作,使事情能夠結合在一起。我認爲我可以幫助 Tenstorrent 發佈產品,並構建下一代產品。此外,Tenstorrent 的 AI 技術建立在 RISC-V 處理器之上,我們使用多個 RISC-V 處理器來實現這一點,從非常小的到中等的再到大的。所以,我們籌集了投資,組建了一個高端 CPU 團隊,以構建一個基本上是核心的 RISC-V 處理器。

Fairbairn:基本上是什麼...