LeetCode 小體驗

話說我摸了一陣子 Python, 那要算會? 還是不會呢? 稍微 Google了一下相關資料, 臉書的廣告就變成各種 Python 補習班了. 當然, 要我花錢去補習或是考照那是絕不可能的! 好歹我還曾經贓到過 Sun 認證的第一代 Java 講師稱號呢, 怎麼可以從講師變學徒呢? 至少要自修吧! 哈! 但是誰可以幫我鑑定一下我的水準呢? 我靈機一動就想到了 LeetCode.

如果我用 Python 來解 LeetCode 的題目 [1], 不就知道自己的水準好不好了嗎? 於是乎我找出註冊 N 年還沒開工過的 LeetCode 帳號, 選用 Python3 來作答. …..嗯, 果然程度不太好. 雖然看過一些 code, 也把教學 [2] 讀完了. 不過還是不能得心應手.

尤其第一次做, 我還不知道題目下面就有 test case, 也不知道不用自己寫輸出入 UI, 只要 function 吃到參數就好. 所以花了很多時間設計怎麼輸入 list 最 user friendly, 結果不但做白工, 還判失敗~~ 結果拔一拔反而 pass 了. 完全在搞笑!

所以提醒初學者, 先選選擇難度. 然後挑個自己想解的題目.

點進去之後. 可以選各種語言. 下面有 test case. 右下角選 run, 然後看 Result 對不對? 對的話就可以按綠色的 Submit. 如果選 auto, 電腦可以自動幫忙完成, 當然那也要花錢錢. 點選題目也可以看別人的解答, Stackoverflow 也一堆解答. 不過我第一個程式當然要自己摸索~~ (當然也就搞笑了).

Accept 之後, 系統還會說明執行速度和使用 memory 兩方面贏過多少人? 這個要拚的話當然是可以再努力. 不要 init class 也可以變快一點 (^^). 另外, 我傻傻地用初學時的 Jupyter Notebook 打草稿, 這樣連 list 都要 import 才編得過. 但是在 LeetCode 卻都可以忽略. 果然是有差!

Anyway, 我第一次 run LeetCode, 而且是用 Python. 這還滿值得我記錄的, 算是 2023 年的新年新把戲!

[REF]

  1. https://leetcode.com/problemset/all/
  2. https://docs.python.org/zh-tw/3/tutorial/index.html

UCIE 小整理

新 IC 非常順利, 好像不需要額外的關注. 於是來看一下 UCIE 說什麼? 上次研讀了 chiplet, 這次的 UCIE (universal Chiplet Interconnection Express) 就是用來規範 chiplet 如何連接. 特別有趣的是, 有別於上次舉的都是 AMD 的例子, UCIE 則是 Intel 所主導的. Contribution member [1] 包括咱們的同業: Broadcom, MTK, Marvell; IP 公司 Synopsys, Cadence 等等. 沒有 AMD!

按照 [2] 的說法, 大公司將比照 Apple, 跳過 IC 設計公司, 自己做產品. 在分工上, 依然維持 fabless, 例如 Apple, AMD 都是. 但是產品由自己定義, 甚至也不用讓 ODM 賺一手. 只要把 HW IP 兜起來, 然後找 TSMC 做 IC 和封測, 自己出 HWSD 設計系統, 發包給 OEM 生產即可. 這樣技術都在自己家裡.

當然, 如果這個趨勢成真, 那 fabless IC design house 大概就沒飯吃了, 只能吃雜糧配菜. 舉例來說, Meta 要建立元宇宙用的資料中心, AMD 出 chiplet 來搶單, 第二代 EPYC 把 CPU/DDR 都用封好了, 外面有自家 interface 可以接網路 PHY, GPU, NPU 這些, layout 都固定了, 系統廠根本賺不到設計費. 更不干 design house 什麼事. 如果 IC design house 沒有符合 chiplet 互通標準的 die 可以賣給 AMD (舉此處資料中心的例子), AMD 絕不可能直接跟螃蟹公司買 Gigabit IC, 因為它不要封裝好的, 只要 known good die.

根據 UCIE 白皮書, 製程愈先進, 軟體愈貴 – 占用整個 design cost 的比重愈高, 驗證則居其次. 這個問題如何解決呢? 幫 SWSD 加薪嗎? 嗯, 但願如此. 白皮書的看法是簡化連接方式, 把它做到極簡, 就不容易出錯.

白皮書裡面有一張類似的圖, 但下圖這張 (取材自 [4]) 比較簡單. 在 UCIE 1.0 裡面, 最上層可以看到 PICE, CXL (Computer Express Link) 等知名 protocol. 其中 streaming protocol 是用來 mapping 到其他規格用的. 多種規格都以 256 byte Flow control Unit (FLIT) 為單位傳到 Die-to-Die Adapter. 其中 FDI 是 FlIT awared D2D interface. D2D adapter 負責處理繁瑣的資料處理, 然後透過 RDI (Raw D2D interface) 跟真正的 PHY 溝通.

資料傳到 PHY 這邊並不是終結, 而是 UCIE interconnect 到另外一個 die.把這些 die 都封裝起來, 是一個 2D/2.5D/3D 的 SOC. UCIE 在此提供 on package 的整合規範.

舉例來說, 下圖是一個伺服器的機架, 我們在電影裡也會看到. 主角想拔出一個抽屜 (drawer), 阻止 AI 電腦的運作. 在 UCIE 的架構下, 可能一個槽全是 (non-volatile) memory/storage, 另一槽全是 CPU/NPU 之類的. 彼此之間透過 UCIE off package 的方式溝通. 所以時間有限的話, 要拔對抽屜才能拯救世界!

最後, 這整件事對 fabless IC design house 有什麼意義呢? 那就是在大廠自己開 IC 的情況下, 設法做一些 chiplet 賣給他們, 多少能賺一點. 需要改變的是: 把手上的 IP 做成 chiplet die, 支援任何一種 chiplet interconnection protocol, e.g. UCIE, 並推銷出去. 我猜 CP 的驗證也要做得好, 但不用管 FT 了吧 (?).

[REF]

  1. https://www.uciexpress.org/copy-of-membership
  2. https://www.inside.com.tw/article/29275-behind-intel-ucle
  3. https://www.uciexpress.org/_files/ugd/0c1418_c5970a68ab214ffc97fab16d11581449.pdf
  4. https://www.edntaiwan.com/20221021nt61-ucie-spec-for-developing-a-chiplet-design/

Chiplet 小整理

今天跟前同事吃晚餐, 討論到 chiplet 這個東西, 感覺滿有趣的, 最近想花一點時間來整理. 不過更深入的研究要等我們新 IC Danvers bring up 以後才可以. 剛剛在辦公室玩了一下 Android 12 還跑得滿順的, 把進度寫到月報寄出, 就來 Google chiplet, 順便做個紀錄. 接下來有空再看進階的 UCIE.

Chiplet 的誕生主要考量到單一顆大晶片的良率會降低, 於是把 “traditional monolithic" 這樣的 IC 拆成 4 顆來實作. EPYC 是 AMD 的 server 級 processor. 拆成 4 顆之後. 面積由 777 mm2 長到 852 mm2. 算起來胖了 10%. 下圖取材自 [1].

但 IC 變胖不是天險, 在每顆小 IC 裡面, 我們可以看到 IO, 類比的東西其實是可以抽出來的. 於是乎 4 小 IC 不用長得很像, 而是像拼圖一樣取最大綜效. 下圖同樣取材自 [1], 但是為了避免抄襲太嚴重, 我講一些原來沒有的.

圖片中橘色的部分叫做 CCX (Zen CPU Complex) [2], 多 complex (複雜)呢? 每個 CCX 都有 Core 和 private L2 cache 和 shared L3 cache, 所以 Core+Cache 這樣 CC 地複雜, 就叫做 CCX. 然後也看到一個藍框裡面有白色無限大符號, 那個叫做 Infinity Fabric [3], 這是個 AMD 傳送資料 (Scalable Data Facric) 和控制訊號 (Scalable Control Fabric) 的架構, 可以讓 CPU, GPU, 和其他 IP 互傳. 以上都是 AMD 獨有的術語, 但是概念可以推廣. DDR 就是記憶體的那個 DDR.

然後, 我們又知道 DDR 的特性沒辦法走到最新進的製程 (電容小速度快, 但是電容小充不多), 所以把 DDR 挪到中間去, 用比較舊的製程 (14 nm), CCX 用比較新的製程 (7 nm). 這樣成本據說還可以變成一半. 當然封裝的難度就增加了. 但 chiplet bonding (3D 封裝) 也是最近當紅的技術 [4].

[REF]

  1. https://www.eettaiwan.com/20210305nt01-amd-shows-its-chiplet-playbooks-at-isscc/
  2. https://fuse.wikichip.org/news/1177/amds-zen-cpu-complex-cache-and-smu/
  3. https://en.wikichip.org/wiki/amd/infinity_fabric
  4. https://www.cadence.com/content/dam/cadence-www/global/en_US/documents/tools/ic-package-design-analysis/chiplets-and-heterogeneous-packaging-are-changing-system-design-and-analysis.pdf

Khronos 專利池小註解

Khronos 名下有很多技術, 像是 Vulkan®, OpenGL®, OpenGL ES, WebGL™, OpenCL™, OpenVX™, COLLADA™ and glTF™.  這些. 那麼到底是誰發明出這一堆東西呢? 我以前也覺得很好奇. 趁放假研究一下, 原來 Khronos 這個組織就是一個大專利池.

如果參加 Khronos 的會員, 就可以對於 essential 的 IP 享有交互授權 (reciprocal license) 的好處, 也就是會員之間不能用交互授權的 IP 互告 [1] – 如果有繳會員年費的話. 如果不參加會員, 也可以用 adopter 的身分實作這些 IP, 只要繳個 20K USD 左右 (只是舉例, 非固定數字. ), 不論出貨數量.

參加會員的話, 又分為好幾個等級 [3], 總是多花錢還會有投票權 (Contributor Member). 花更多可以選董事 (Promoter Member). 如果 license 一個技術要花 20K, 那繳個 18K 年費當 Contributor member 也不算多貴. 因為會員也自動是 adaptor. 不過是否要先是其他種類會員才能樂捐成 contributor 會員呢? 看 [4] 的 PDF page 1 – defination, 可能是.

Promoter MemberAssociate Member
$75,000 per year$3,500+ per year
Board Approval RequiredAvailable to companies with up to 100 full-time employees. $175 per employee
The right to designate a Director to the Khronos Board.
Full working group participation and voting rights.

後面有寫到 associate member 是按照員工人數來收錢的, 一個人頭 175 元, 而且是超過 100 人的公司才可以參加. 假如公司不幸有 1 萬人, 那年費就高達 175 萬美金. 就算可以拗說一個 BU 只有 100 人, 那也要 17500 = 17.5K (USD). 花這麼多錢, 應該有對應的好處, 讓 Broadcom, MediaTek 都參加 [2].

會員之間會有 working group 會議討論哪些 IP 是交互授權的? 正面表列的話, 只有兩種 IP 會落入交互授權:

  1. The only point of licensing is the instant of ratification by the Khronos Board, and ONLY essential IP in the final spec is reciprocally licensed, meaning that discussions and contributions not included in the final specification bring no licensing obligation;
  2. Khronos Members do not have to disclose any IP that will be included under the standard reciprocal license – so no patents are ever discussed in open Khronos meetings so that Members are not put on notice of specific patents.

紅色字體是我高亮點, 雖然只看這幾個字會是斷章取義, 但基本上參加的百來個會員也不是傻的, 不相關, 不重要的 IP 不會納進來. 而且會員可以正面表列那些 IP 不列入交互授權之中. 官方說法, 這種事不常發生.

 … this mechanism has only been invoked a handful of times in the fifteen year history of Khronos Group.

然而, 只有在這個會員 [2] 裡面, 非正面排除, 又被正面表列的 IP 才能交互授權. 免於互相收錢或是互告. 但是對於非會員就沒有約束力了.

[REF]

  1. https://www.khronos.org/members/ip-framework
  2. https://www.khronos.org/members/list
  3. https://www.khronos.org/members/
  4. https://www.khronos.org/files/member_agreement.pdf

Thread Border Router 小註解

首先講到 Thread 這個技術, 它又是一個把常見名詞變成專業術語的東西. 上次那個 SALT 也沒紅, 不知道是否取這種名字不夠吉利? 總之, 先來介紹一下 Thread [1].

Thread 是由 Thread Group 開發, 所以不是來自諸如 The Hub Re-Assambled and Delivery 這種縮寫, 哈!

基本上它也 (只) 走 IPv6, 支援 mesh, 主要用於 IOT (Internet of Things). 其網路 protocol 6LoWPAN 基於 IEEE 802.15.4. 而藍牙/WPAN 是 802.15.1, BT/WIFI 共存是 802.15.2, 高速 WPANs 是 802.15.3, 可見它和藍牙的關係也匪淺. 事實上, ZigBee 也是走 802.15.4, 所以 Thread 更近似 ZigBee, 但是 Thread 在架構和相容性上又勝出 [2].

本圖取材自 [2] 的圖 1+圖 2, ZigBee 顯得不合群.

讓我們接受 Thread 比較好, 接下來看 router. 如果只是一對一連接, BT 就很好用了. 但在智慧家庭 (Home automation) 的考量下, 家裡可是會有一大堆 IOT. 而且分別來自不同陣營的生態系, Siri, Alexa, Google 可能混居一室, 這個就不是一個 PAN 可以搞定的.

另一個規格 Matter [3] 就是用來解決多生態系混搭的問題, 只要大家都可以用 IP 溝通不就可以在同一個環境共存了? 所以支援 mesh 的 WIFI 和 Thread 都可以支援 Matter. 既然 WIFI 有 router, Thread 當然也有 router [5]. 而在 WIFI 和 Thread 的交界, 就會有所謂的 Thread Border Router (TBR) [4].

上圖和下圖都來自 [4]. 上圖容易理解, 基本上就是說明 TBR 的角色是跨 LAN. 下圖比較複雜. 說明 TBR 的主要功能之一是 service discovery. 任何一個 Thread device 能夠提供服務的話 (如開燈, 播音樂…), 必須跟 TBR 以單播 (Unicast) 註冊, 而不需要跟 Thread 網內的其他 device 交頭接耳 . 這是它可以省電的方法.

由於 TBR 知道每個 Thread Device 能提供什麼服務, 它就可以對 WIFI mesh 進行多播 (Multicast) 但不是廣播 (Broadcast), 因為 LAN 裡面可能有非 Matter 相容的裝置. 所有的 Thread Device 都是透過 TBR 代理做 mDNS ( multicast DNS) [6], 這又有助於省電.

因此我們可以說 TBR 兼具了 SRP server 和 Advertising Proxy 的角色. 另一方面, Thread Device 怎麼發現 WIFI 那邊有什麼 service 呢? 答案還是透過 TBR, Thread Client 透過 TBR 當 DNS-SD (service discory) Discovery Proxy 跨出 Thread border.

總結來說, TBR 的 SDK 和 sample code 可以從公開網路上找到 [7]. 而且 TBR 成功地串起 WIFI 和 Thread 的世界, 讓 Matter 這種應用可以更容易地被實現. 套句廣告詞, 這麼好的東西去哪裡買呢? 其實目前很少有純 Thread borad router 可以買, 它可能只是 WIFI router 的一個附加功能, 或者直接在某個智慧燈泡裡.

所以我們要認 logo. 下圖左邊這個 logo 表明這個 Thread device 是個 TBR, 下圖右邊這個 logo 表明它是一個普通的 Thread Device. [5]

[REF]

  1. https://en.wikipedia.org/wiki/Thread_(network_protocol)
  2. https://www.electronicproducts.com/ip-on-wi-fi-zigbee-and-bluetooth-opportunity-and-risk/
  3. https://en.wikipedia.org/wiki/Matter_(standard)
  4. https://blog.espressif.com/matter-thread-border-router-in-matter-240838dc4779
  5. https://www.threadgroup.org/Portals/0/documents/support/ThreadBorderRouterWhitePaper_07192022_4001_1.pdf
  6. https://en.wikipedia.org/wiki/Multicast_DNS
  7. https://github.com/espressif/esp-idf/tree/master/examples/openthread/ot_br