工程哲學:Jim Keller,電晶體是免費的

重點摘要
- 電晶體很便宜;瓶頸很昂貴。 Keller的招牌做法在三十年、十幾款晶片裡反覆出現:用矽片去除擋在吞吐量前面的東西——更寬的管線、更多的執行單元、更快的互連——因為沒用到的電晶體就是浪費掉的電晶體。當這些額外的硬體能持續餵飽忙碌的單元、而非讓它閒置時,這個賭注就回本了。17
- 您接觸到的運算,有一半背後的晶片都出自他手。 DEC的Alpha、AMD的Athlon(K7)與K8——他在其中共同制定了x86-64(AMD64)指令集與HyperTransport——接著是iPhone 4與初代iPad背後的Apple A4與A5,然後是讓AMD東山再起的Zen、Tesla的自動駕駛電腦,再到擔任Intel資深副總裁的一段時光。少有工程師能形塑如此眾多的產品線。123
- 摩爾定律並未終結——只是人們不再去數它底下的那些創新。 Keller的公開立場——在演講中、在正式場合都這麼主張——是電晶體微縮還有一、二十年的空間,因為密度來自成千上萬層層疊加的創新,而非單一招數。現代電晶體的鰭(fin)至今仍寬達一百多個原子;往下還有很長的路可走。47
- 從賓州州立大學的電機學位,到RISC-V的傳道者。 約莫1958年出生,在賓夕法尼亞州立大學攻讀電機工程,隨後的職涯走過DEC -> AMD -> Broadcom -> P.A. Semi -> Apple -> AMD -> Tesla -> Intel,如今則是Tenstorrent的執行長,在開放的RISC-V指令集上打造開放的AI加速器。156
核心原則
「當全世界都認為摩爾定律已死,晶圓廠和技術專家卻認為它還沒死,而且現在每一家都公布了摩爾定律的十年藍圖。」——Jim Keller4
多數工程師把硬體當成固定的預算。別人交給您一個電晶體數量、一個功耗範圍、一個製程節點,而您只能在其內部最佳化——這裡省一個週期、那裡折疊一個階段、精打細算地配給矽片。Keller的做法恰恰相反。他把電晶體當成便宜的資源,把瓶頸當成昂貴的那一個。如果單一單元正在餓死機器的其餘部分,答案很少是把那個單元設計得更聰明;而是投入更多矽片——複製它、把它管線化、拓寬通往它的路徑——讓瓶頸消失,使下游一切都保持忙碌。7
業界為此貼上的標籤是「電晶體是免費的」。這在字面上並不成立,Keller也心知肚明——矽片要花錢,也要耗電。重點在於比較。工程師的時間很稀缺,設計的風險很危險,而閒置的執行單元則是純粹的浪費。相較之下,邊際的那一顆電晶體是您手上最充裕的東西,而摩爾定律每隔幾年就再多塞給您一些。所以有紀律的做法,是花掉充裕的資源來節省稀缺的資源。光是這一個重新框定——究竟哪種資源才真正便宜——就是為什麼他的晶片往往寬、猛、渴求吞吐量,而非聰明而窄。17
這也說明了他為何如此大聲疾呼摩爾定律並未終結。倘若電晶體即將不再變便宜,整套策略就會崩潰。於是Keller做著不討喜的工作:拿數字來論證,微縮還有一、二十年的空間——「摩爾定律」從來就不是單一創新,而是成千上萬項創新的層層串接,每一項都有自己的報酬遞減曲線,加總起來成了一條指數曲線。7 花掉便宜的資源去消滅瓶頸,並持續證明那個便宜的資源依舊便宜。 其餘的都是細節。
背景脈絡
James B. Keller約莫於1958年出生,取得賓夕法尼亞州立大學電機工程學士學位,於1980年畢業。1 隨後的經歷,是業界史上最令人難以置信的履歷之一——不是因為某一款晶片,而是因為定義時代的晶片數量之多,又橫跨了那些通常彼此競爭的公司。
他於1982年加入迪吉多電腦公司(Digital Equipment Corporation),待到1998年,先後參與VAX 8800,接著是Alpha產品線——21164與亂序執行的21264(EV6)——那是當時最快的微處理器。1 1998年他轉往AMD,協助推出Athlon(K7),並擔任K8微架構的首席架構師。K8是最關鍵的一款:Keller共同制定了把x86擴充至64位元的x86-64(AMD64)指令集,以及把多顆處理器串接在一起的HyperTransport互連。AMD64成了整個PC與伺服器世界——連Intel在內——所運行的64位元標準。12
接著,漂泊的旅程開始了。1999年的SiByte(MIPS網路晶片),於2000年被Broadcom收購,他在該公司擔任首席架構師直到2004年;2004年起以工程副總裁身分加入P.A. Semi,打造低功耗的行動處理器。Apple於2008年收購了P.A. Semi,Keller主導了A4與A5系統單晶片的設計——也就是iPhone 4、iPhone 4S、初代iPad與iPad 2內部的那塊矽片。這些晶片為Apple的自研矽片計畫播下種子,正是後來孕育出Apple Silicon的血脈。13 他於2012年重返AMD,架構Zen——這個微架構把AMD從近乎無足輕重的處境,重新拉回真正具備競爭力的賽局。1 然後是2016年起的Tesla,擔任Autopilot硬體副總裁,他與Pete Bannon在此領銜打造全自動駕駛(FSD)電腦;再來是2018至2020年的Intel,擔任矽工程資深副總裁。12 自2020年底起,他便落腳Tenstorrent——先任技術長,2023年起任執行長——在RISC-V上打造AI加速器。56
貫穿其中的主線並非對某家公司的忠誠。而是對一套方法的忠誠——這套方法可攜性十足,足以讓他先後在DEC、AMD、Apple、Tesla與Intel都打贏勝仗。
他的作品
管線化與「電晶體是免費的」
讓我們從那個支撐起其餘一切的觀念說起,因為正是在這裡,Keller的直覺化為了算術。處理器分步驟執行指令——擷取指令、解碼、讀取運算元、進行運算、寫回結果。最樸素的機器,會讓一條指令一路走完所有步驟,才開始下一條。問題在於,當運算單元在工作時,擷取與解碼硬體閒坐著;當結果正在寫回時,幾乎其他所有部分都無所事事。您那些昂貴的矽片,大部分時間都是暗的。
解方就是管線化(pipelining):把工作切分成階段,讓它們重疊,就像生產線一樣。當指令一處於運算階段時,指令二正在解碼,指令三正在被擷取。每條指令所需的步驟數依舊不變,但機器現在每個週期就完成一條,而非每五個週期才完成一條,因為沒有任何一個階段是閒置的。代價在於,讓工作重疊得花硬體——階段之間的鎖存器、追蹤相依關係的邏輯、用來處理「指令二需要指令一尚未產出的結果」這類情況的機制。您拿電晶體換取單元的忙碌。1
Keller的晶片把這個賭注押得很重。走超純量(superscalar)——多個執行單元,讓您一個週期完成不只一條指令——以及亂序執行(out-of-order)——重新排序指令,使一條卡住的指令不致阻擋已就緒的指令——兩者都得耗費大量矽片用於記帳。Alpha 21264是一個激進的亂序設計;AMD的K7與K8是寬的超純量機器;Zen又一次拓寬了路徑。1 每一次,背後的推理都一樣:執行單元才是重點,閒置的單元是浪費,而餵飽它們所需的電晶體則是整棟樓裡最便宜的東西。用矽片去除瓶頸。這就是那個原則,而管線正是它最簡單的形式。

AMD的東山再起與AMD64的血脈
對業界重塑最深的工作是K8。到了2000年代初,x86的32位元定址空間已快用罄——4 GB的記憶體正成為一道真實的天花板。前方有兩條路。Intel押的是Itanium:拋棄x86,打造一個全新乾淨的64位元架構,與堆積如山的既有軟體斷絕相容。AMD押的是相反的一注,由Keller主導其架構:擴充x86至64位元,同時讓它仍能全速運行所有既有的32位元程式碼。那就是x86-64,也稱為AMD64。12
這個務實的賭注大獲全勝。軟體不必重寫;升級之路毫無痛苦;舊有程式碼的效能也沒有打折。AMD64成了標準,而最終是Intel採用了AMD的擴充,而非反過來——如今幾乎每一顆PC與伺服器CPU所採用的架構,正是Keller團隊所制定的那一個。與之並行的HyperTransport,則讓AMD的Opteron伺服器有了一條快速、點對點的方式把多顆處理器串接起來,直攻「電晶體是免費的」直覺向來緊盯的記憶體與互連瓶頸。12 當Keller於2012年重返AMD架構Zen時,他在一家幾乎已跌出高效能賽局的公司身上,重演了同樣的模式:一個寬、乾淨、模組化的核心,縮小了與Intel的差距,讓AMD重新擁有一條可信的產品線。1 他兩度走進AMD,兩度在離開時都留給它定義其下一個十年的架構。
從零打造的Apple矽片
陰影拖得最長的篇章,卻是最安靜的一段。當Apple於2008年收購P.A. Semi時,Keller領導的團隊設計了A4——Apple首款自研的系統單晶片,於2010年隨iPhone 4與初代iPad出貨——以及其後繼者A5,搭載於iPhone 4S與iPad 2。13 在此之前,Apple是現成購買行動處理器的。A4正是Apple決定掌控自家矽片的那一刻,而Keller協助建立起來的團隊與紀律,成了如今產出A系列與M系列晶片、驅動每一部iPhone、iPad與Mac的那項計畫的根基。
其策略邏輯,是同一套「吞吐量與掌控」的直覺,只是換到了一個新領域。手機最嚴苛的限制是每瓦效能:您無法用桌機等級的功耗去硬幹。從頭到尾擁有設計——而非接受供應商的通用零件——讓您能把電晶體精準地花在工作負載需要的地方,一顆也不浪費在它不需要的地方。這是「電晶體是免費的」原則為了一顆電池而翻轉過來的版本:不是「自由地加矽片」,而是「刻意地擺放每一顆電晶體,因為整個設計都是您的」。從A4到今日的Apple Silicon、再到John Carmack揚名立萬的那種貼著硬體寫的效能工作,這條線都直直穿過2008年的那個決定。3

第一原理,以及Tenstorrent的開放硬體
把這些公司串在一起的方法,是第一原理思考(first-principles thinking)——願意拋棄繼承來的假設,去問這個問題究竟真正需要什麼。Keller直言架構會腐朽:他主張,大約每五年,您就該從頭重做一次設計,而非修補舊的,因為重寫到頭來,會比它所取代的那個層層堆積的版本更快、也更不複雜。7 這份紀律,在於持續追問您真正想做的是什麼,剝除掉那些兩個製程節點以前還成立、如今已不成立的限制。7
那份直覺,正是他拒絕「摩爾定律已死」共識的原因。他的論證是機制性的,而非信仰性的:電晶體密度是成千上萬項各自獨立的創新加總而成,每一項都在自己的報酬遞減曲線上,而這個總和依舊是指數的。如今一個FinFET的鰭寬達一百多個原子;您可以想像一顆每邊十個原子的電晶體——「小上一百萬倍」——之後才會觸及底線。「所以我們並沒有把原子用完。」他如是說。47 在他的敘述裡,悲觀者只數了一項創新,卻錯過了那整串串接。
在他擔任執行長的Tenstorrent,這個第一原理的賭注是制度化的。該公司在RISC-V——那個開放、免授權費、無專有控制的指令集——上打造AI訓練與推論加速器,並打算把自家的軟體堆疊開源、把自家的CPU與AI核心IP對外授權,而不只是賣晶片。56 Keller的公開信念是:「在接下來的5到10年,RISC-V將會接管所有資料中心。」5 這一注押的是:開放硬體會像先前的開放軟體一樣,靠第一原理取勝——降低門檻,讓眾多參與者一起打造,於是開放的生態系創新會勝過封閉的那一個。同一個曾讓x86成為標準的人,如今押的卻是:標準應該屬於一個沒有人能擁有的東西。
方法論
橫看Alpha、AMD64、Zen、A4與Tenstorrent,同樣的招數一再重現。與其說Keller的方法是一句口號,不如說是一組始終如一的承諾。
花掉便宜的資源去消滅瓶頸。 那個定義性的習慣,是辨認出哪種資源其實充裕——通常是電晶體——再自由地花掉它,去除任何正在餓死吞吐量的東西。更寬的管線、更多的單元、更快的互連。這個通則可以遷移:找出您手上最充裕的資源,拿它去交換您手上最稀缺的那一個,而非一視同仁地配給所有資源。這就是在矽片這一層的品質是唯一的變數——正確性與吞吐量才是目標,而電晶體預算並不是您以為的那道限制。7
按表操課,從頭重建。 大約每五年,把設計重做一遍,而非修補它,因為繼承來的假設會鈣化,而重寫出來的結果更簡單。捨棄那些「能用但已過時」的工作的勇氣,既罕見又是承重的——那正是讓Linus Torvalds敢於丟掉一個不再合身的子系統的同一份直覺。7
去問問題究竟真正需要什麼,而非上一個設計所假設的東西。 第一原理思考,意味著剝除掉那些兩個節點以前還成立、如今已不成立的限制。這份紀律,在於持續追問「我們真正想做的是什麼」,直到那些繼承來的包袱脫落為止——這是把證據關卡對準您自己的假設,而非對準別人的主張。7
當預算吃緊時,刻意擺放每一顆電晶體。 「電晶體是免費的」的另一面,就是手機:當牆是功耗、而非面積時,您擁有整個設計,於是能把矽片精準地放在工作負載需要的地方。知道自己身處哪一種情境——充裕,還是稀缺——並據此設計,才是真正的本事,而非一條放諸四海的規則。3
把開放性當成一條第一原理來押注。 RISC-V與一套開放的軟體堆疊,是一場賭注:降低門檻能讓更多人一起打造,而開放的生態系創新會勝過封閉的那一個。這是把最低限度值得做的產品的推理,套用到整個平台之上——出貨那個別人能在其上繼續打造的開放之物,而非那個只有您自己能打造的封閉之物。56
影響鏈
形塑他的人
DEC與Alpha文化。 Keller在迪吉多學會了高效能設計,在Alpha產品線上,在一個幾乎把生猛速度與激進亂序執行看得高於一切的組織裡。「用矽片換取吞吐量的勝利」這份信念,正是在那裡、在當代最快的微處理器之上鍛造出來的。(奠基性影響)
Dirk Meyer與Pete Bannon。 Keller最重要的工作都來自合作——他與Dirk Meyer共同架構了Alpha亂序執行的EV6,接著與Pete Bannon並肩領銜Tesla的FSD電腦,而Bannon後來循著一條平行的路徑進入了Apple的矽片計畫。這些合作並非偶然;最難的晶片是團隊運動,而Keller那幾位一再出現的共同架構師,形塑他作品的程度,不亞於他形塑他們的。(直接影響)
摩爾定律本身。 整套「電晶體是免費的」策略,都仰賴電晶體持續變便宜。Keller的世界觀,是Gordon Moore那項觀察的下游產物——這也正是他如此激烈捍衛它的原因。倘若那串微縮創新的串接停了,方法就非變不可。(奠基性影響)
他所形塑的人
Apple Silicon。 Keller在P.A. Semi收購案後,協助在Apple建立起來的A4與A5團隊與紀律,成了如今產出每一顆A系列與M系列晶片那項計畫的根基。過去十年最具份量的消費級矽片,都可追溯到一個他扮演核心角色的決定。
AMD的兩度東山再起。 K8/AMD64讓AMD成為伺服器領域的競爭者,並奠定了全世界所運行的64位元標準;十年後,Zen又把AMD拉回了高效能賽局。在他離開之後,這兩個架構都還定義了AMD多年的競爭定位。
RISC-V與開放硬體運動。 身為業界最具公信力、又公開且商業性地押注於開放指令集的架構師之一,Keller為「硬體能像軟體一樣走向開放」這個論點增添了份量。Tenstorrent就是那項論證的實證。
貫穿的主線
Keller正是這個系列關於花用對的資源那條線索與金屬相遇之處。John Carmack靠著把機器理解到週期的層級,從固定的消費級硬體裡榨出不可能的效能;Keller則在他底下那一層工作——他設計機器,而他面對瓶頸的答案,不只是繞著它寫程式,更是加上去除它的那些矽片。Bjarne Stroustrup在零開銷抽象的原則上打造了C++,亦即您不該為您沒用到的東西付費;Keller的「電晶體是免費的」正是它在硬體上的鏡像——花在能讓機器保持忙碌的東西上,不在閒置之物上浪費分毫。而當Andrej Karpathy描述「軟體2.0」——由資料編譯而成、而非手寫的程式——時,Keller正在打造這種新工作負載所需的矽片——在開放RISC-V上、從第一原理出發、為一個舊有通用CPU從未為之塑形的問題而設計的AI加速器。Carmack說,精通別人給您的硬體;Stroustrup說,別為您沒用到的東西付費;Keller則說:當硬體就是那個瓶頸時,打造一個更好的——並持續證明還有原子可花。(系列銜接)
我從中學到的
我從Keller身上一直記得的一課,是弄清楚究竟哪種資源真正便宜,然後毫無愧疚地花掉它。 一視同仁地配給所有資源很容易——把每一道限制都當成緊束的,在它們全部之內畏縮地最佳化。Keller的習慣,是察覺到有一種資源充裕、其餘的稀缺,然後朝著那份充裕所允許的方向狠狠交換。電晶體很便宜;閒置的單元與工程師的時間很昂貴;所以花電晶體去消滅瓶頸。在我自己的工作裡,那個充裕的資源很少是矽片——它往往是算力、是一個模型的token,或是廉價地重新生成一份草稿的能力。招數是一樣的:別再配給您手上最充裕的那個東西,把它對準真正擋住您去路的那一個。
第二課,是願意按表操課,從頭來過。 Keller主張您該每隔幾年就從頭重新設計一次——因為重寫的結果會比修補過的原版更簡單——這違逆了一切「保護自己已做之工作」的本能。但他說得對:假設會鈣化,曾經成立的限制會悄悄不再成立,而那個層層堆積的設計,扛著它們全部的重量。這份紀律,在於定期以全新的眼光去問,問題此刻究竟真正需要什麼,並且有膽量在舊答案不再合身時把它丟掉。我去年打造的東西,是為去年的限制而打造的。Keller的職涯,是一則漫長的論證:那個勇敢的舉動——那個真正能贏的舉動——是從第一原理出發,把它再造一遍。
常見問題
Jim Keller的工程哲學是什麼?
花掉便宜的資源去除瓶頸。Keller把電晶體當成充裕之物——「電晶體是免費的」——把工程師的時間、設計的風險與閒置的硬體當成昂貴之物,於是他的晶片自由地把矽片花在更寬的管線、更多的執行單元與更快的互連上,以維持高吞吐量。17 在這之下的,是第一原理思考:大約每五年,從頭重新設計而非修補,因為繼承來的假設會鈣化,而重寫的結果更簡單。7
Jim Keller設計過哪些晶片?
橫跨彼此競爭的公司、範圍驚人:DEC的Alpha處理器(包括亂序執行的21264);AMD的Athlon(K7)與K8——他在其中共同制定了x86-64/AMD64指令集與HyperTransport互連;iPhone 4與初代iPad背後的Apple A4與A5系統單晶片;他2012年重返後的AMD Zen架構;以及Tesla的全自動駕駛電腦。他也曾於2018至2020年間擔任Intel的矽片資深副總裁。123
Jim Keller為什麼說摩爾定律並未終結?
因為,在他的說法裡,電晶體密度並非單一創新,而是成千上萬項各自獨立創新的加總,每一項都在自己的報酬遞減曲線上,加總成一條指數曲線——而這個總和還剩下一、二十年。7 他指出,晶圓廠與技術專家已公布了十年藍圖,現代FinFET的鰭至今仍寬達一百多個原子,而您可以想像一顆每邊十個原子的電晶體——小上一百萬倍。「所以我們並沒有把原子用完。」47
Tenstorrent是什麼,Jim Keller在那裡做什麼?
Tenstorrent是一家AI晶片公司,Keller自2023年起擔任執行長(在此之前是技術長)。它在開放的RISC-V指令集上打造AI訓練與推論加速器,打算把自家的軟體堆疊開源,並在賣晶片之外對外授權自家的CPU與AI核心IP。56 Keller押的是:開放硬體將循著開放軟體走向主導地位的路徑前進——他說過,他相信「在接下來的5到10年,RISC-V將會接管所有資料中心。」5
來源
-
“Jim Keller (engineer),” Wikipedia. 約莫1958年出生;賓夕法尼亞州立大學電機工程學士(1980年)。職涯:DEC(1982-1998),參與VAX 8800以及Alpha 21164與亂序執行的21264;AMD(1998),推出Athlon(K7)並擔任K8微架構首席架構師,包括共同制定x86-64指令集與HyperTransport互連;SiByte(1999),以及2000年11月被收購後在Broadcom擔任首席架構師(直到2004年);2004年起在P.A. Semi任工程副總裁;2008年Apple收購P.A. Semi後加入Apple,設計用於iPhone 4、4S、iPad與iPad 2的A4與A5 SoC;再度加入AMD(2012-2015),領導Zen與K12微架構的開發;Tesla(2016-2018)任Autopilot硬體工程副總裁;Intel(2018-2020)任資深副總裁;自2020年12月起在Tenstorrent(技術長,2023年1月起任執行長)。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
“Jim Keller (engineer),” Wikipedia,並由“Who is Jim Keller and what’s he doing at Tenstorrent?,” Electronic Specifier佐證。Keller是AMD K8的首席架構師,共同制定了把x86擴充至64位元的x86-64(AMD64)以及用於多處理器通訊的HyperTransport互連;AMD64成了64位元標準,隨後被整個PC與伺服器業界採用。同一篇人物側寫將他的工作概括為:Apple A4/A5、AMD Zen、Tesla自動駕駛晶片,以及Intel矽片策略背後的架構師。 ↩↩↩↩↩↩
-
“Tesla Autopilot hardware,” Wikipedia,以及“FSD Chip – Tesla,” WikiChip。Tesla全自動駕駛(FSD)電腦——前身為Autopilot Hardware 3.0——的設計於2016年由Jim Keller與Pete Bannon領銜的團隊展開;該晶片於2018年底/2019年初投入生產,以三星的14奈米製程製造。P.A. Semi收購案後的Apple A4/A5設計角色,記載於1所引用的Jim Keller Wikipedia人物側寫中。 ↩↩↩↩↩↩
-
“Moore’s Law is Not Dead,” EECS at UC Berkeley colloquium(Jim Keller,2019年9月18日),如“Moore’s law is far from death, according to Intel’s Jim Keller,” TweakTown,以及“I’m Not Dead Yet; Keller Channels Moore,” PC Perspective所報導。Keller:「當全世界都認為摩爾定律已死,晶圓廠和技術專家卻認為它還沒死,而且現在每一家都公布了摩爾定律的十年藍圖。」在原子尺度上,他指出一個FinFET的鰭至今仍寬達一百多個原子,而人們可以想像一顆每邊約十個原子的電晶體——約莫小上一百萬倍——所以「我們並沒有把原子用完」。 ↩↩↩↩
-
“Jim Keller on AI, RISC-V, Tenstorrent’s Move to Edge IP,” EE Times。Tenstorrent執行長Keller談RISC-V:「我的信念是,在接下來的5到10年,RISC-V將會接管所有資料中心」,尤其是在科學運算與HPC領域;Tenstorrent在開放的RISC-V架構上打造AI訓練與推論加速器,是開源硬體與軟體的堅定擁護者,並打算把自家的AI軟體堆疊開源、對外授權自家的CPU與AI核心IP。 ↩↩↩↩↩↩↩
-
“About Tenstorrent,” Tenstorrent,以及“Jim Keller (engineer),” Wikipedia。Tenstorrent在開放的RISC-V指令集上打造AI加速器與CPU,具備開源的軟體堆疊(包括Metalium、TT-NN與相關工具),並在自家產品之外採用IP授權模式;Keller於2020年12月以技術長身分加入,2023年1月成為執行長。 ↩↩↩↩↩
-
“Jim Keller: Moore’s Law, Microprocessors, Abstractions, and First Principles,” Lex Fridman Podcast #70(2020年2月),逐字稿經由Happy Scribe。Keller主張,摩爾定律由「字面上成千上萬項創新」所驅動,每一項都有「各自的報酬遞減曲線」,加總成一條指數曲線;「接下來10或20年的微縮會發生」;一顆現代電晶體橫跨約一百多個原子,並可能朝著十乘十乘十個原子微縮;運算具備一層層理解透徹的抽象「從原子到資料中心」;而好的架構意味著定期「從頭」重新設計而非修補,因為重寫出來的結果既更快又更不複雜——那是「在沒有繼承假設下追問您真正想做什麼」的第一原理習慣。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩