2017年1月13日 星期五

從 Helio X20 分享 HMP (Heterogeneous Multiple Processor) 心得


此篇為 2015年 8月 臉書的貼文, 對於 Helio X20 與 HMP 的一些看法
HelioX20 面市已滿一年, 也適合檢視看法的正確性
=====
Mediatek 的 Helio X20 有著 Luffy 般的神技"三檔"已不是新聞, 身為一個小螺絲釘, 對於一些人執著於 Antutu 等測試軟體分數感到近乎偏執的程度(GPU 配置真的弱很久...). 但是對於這樣的極端 HMP 的平台系統(CA72 2.5Ghz X2, CA53 2.0Ghz X4, CA53 1.4Ghz X4), 只延續以往 CorePilot 將其擴充到"三檔", 仍是一個以 system (total DMIPs) performance 與 power 間做考量的 scheduling system, 但問題是對於軟體應用這樣的方案是否足夠?
各位若有興趣而且有機會的話能以 #MT6595 平台(CA17 X4, CA7 X4)實驗, 就可一窺這樣系統的問題: 一個單以系統提供的 total computation throughput 嘗試對應系統負載程度做 system-level scheduling 是不足的. 軟體上會經常碰到的問題是一個應用程式中的 threads 獲得的 computation throughput 會因為 HMP, DVFS, thermal control 而變得與 SMP 架構相較有著較大的變異性, 不公平性與不確定性. 平均分割的 task, 常因為長跑於 little 核心上的 thread 而無法顯示具有大核的效能優勢.

八月中在思考&探討軟體因應HMP策略的同時, 忽然有個念頭, 如果能針對 per-core 的情況, 在計算架構上能考慮到公平性(fairness)這件事情, 似乎問題就解決大半了, 第一時間的發想是將 CPU 做類似 HyperThreading 中 logical core 與 physical core 的 decouple, 多個 logical core 透過切換底層多個 physical core 的對應, 達到 OS scheduling 時間單位級(通常是 1~10ms)內的更細的 core switching, 而這樣的行為對軟體具有 transparent 特性, 也就是 software 完全不會意識到這樣的切換, 以為自己持續是在同一 core 上運作, 而這是 logical core 介面所造成軟體的假象. 以此方式達到底層是 HMP 但是軟體可以視為 SMP 的架構

這樣的想法, 在這個月與其他同仁討論, 但是因為實在不是在唸書時期, 也因為工作而無暇於找出這樣架構的相關研究 ...
而因為另一件事在看近日結束的 Hotchips 2015 的資料, 昨日翻著 slides 看到了這篇 poster - Under 100-cycle Thread Migration Latency in a Single-ISA Heterogeneous Multi-core Processor
儘管方向不同, 但是我快速地理解到這是不同面向, 但是目的完全相同的事情. (reference 中的第一篇是 2003 的論文, 但幾乎是這方向的經典)

有了 references 與 keywords, 花了點時間就找到了一些有趣的東西

這篇是 2013 年的論文,主要以學理分析, 以實驗點出我開頭提到的問題, 並透過不同的大小核數量配置, 分析 throughput, runtime, fairness, 結論是透過 equal-time, equal-progress 的方式有助於軟體於 HMP 架構上的效能. 其中注意到 Hardware vs. software scheduling 這節 "By doing so, the hardware would be able to provide the abstraction to software of homogeneous hardware, while dynamically rescheduling threads among the cores in a heterogeneous multi-core within an OS time slice." 這即與我一開始的想法契合.

這篇也是切分為 logical & physical core, 但是做的事情是 reverse HyperThreading

3. MIT Execution Migration Engine ( link-1, link-2)
一個支援 low-overhead thread migration 的 stack-based 計算架構

這是以學理探討 threads 與 HMP core 動態對應的關係.

這篇與我原始想法幾乎一樣, 很可惜的是沒有做的很深入..

沒有留言:

Chisel 學習筆記 - Scala 與 Chisel 基礎語法

標題為筆記, 但這篇比較屬於心得 延續 上一篇 的環境建立, 這次計劃藉由 Jserv 最新的 課程安排 來學習 Chisel, 當然個人目標是能夠按照 Jserv 的課程規劃在 期限之內 完成 Lab 3, 由於個人並非 digital designer (現在這年紀也算老貓學...