Windows CE,你妈吗喊你在多核上玩玩
轉自:http://hezongjian.com/blog/?p=9693
眾所周知,CE的內核是完全重新寫的,與9x根nt沒有任何關系,這給CE帶來了較好的實時性及靈活性。從誕生之日起,CE的內核改過兩次,第一次是3.0,極大的增強了實時性,第二次是6.0,去除了內存/應用32 / 32的限制。如此看來,貌似已經比較完美了。從6.0發布以來,我一直樂觀的覺得6.0的內核應該可以至少再頂三個版本了,下次更新內核大概要到CE 9.0了(猴年馬月….)。但是計劃不如變化快,信息產業瞬息萬變,很多預言都會被證明是很可笑的。我的這個“預言”也不例外(對在08年TechEd上聽我演講的聽眾說聲抱歉,當時我還極力鼓吹多余的Kernel feature都是沒必要的)。短短幾年時間,如果現在你再問我新版本的CE要不要改內核。我會一口咬定,改,最好馬上改。
個人觀點,欠改的地方有兩個,內存映射和SMP支持。
首先說內存映射。CE從誕生之日起就在Kernel的3GB起始處映射了2個512MB的虛擬地址。一個是有cache的,一個是沒cache的。這使得CE最大的物理內存就只有512MB,512已經是理論極限了,再多了就不認了。512這個數字在嵌入式系統上一直是天文數字,幾年前還是。誰知道隨著智能手機軟件(應用復雜化)跟硬件(內存白菜價)的飛速發展,在手機上裝個512MB的內存也沒什么大不了的。在CE上,如果裝了512MB內存,麻煩還真不小。這個限制應該改了。倒也不是難事,只是向下兼容性要打折扣了。
其次說一下SMP。CE誕生以來一直是針對單CPU的,即使在PC機上,多核技術已經興盛很長時間了,但是依然沒有能夠打動CE加入SMP支持,因為用CEPC的人,一般也不會找個多核CPU。時代又不同了,CE支持的主流平臺──ARM,這幾年也跟著玩起了多核。ARM11, ARM Cortex A9都玩起了MPCore。這一玩,不得了了。如果CE不跟著玩,幾年后,可能移動設備上就看不到CE的影子了。*nix系統(iphone和android)可是原生支持SMP的。雖然*nix系統實時性沒有CE高,但是人家畢竟支持smp,可以把CPU的能力都發揮出來。CE啊,抓緊把spinlock,CPU Affinity這些Desktop Windows上的東西搬過來吧(BSP的實現又復雜化了,當然這些東西要BSP支持)。
其它還有沒有要改的呢,可能有。例如Windows消息機制,現在的WM_LBUTTONDOWN, RBUTTONDOWN消息已經遠遠不適合multi touch了。當然這個可能不需要改內核,driver和API改改就可以,魅族的手機已經實現了。
下一個版本的CE大概今年就會發布吧。新的CE里面這兩點會不會改進,目前還沒有官方的消息。拭目以待吧。
(參考資料,ARM的多核:http://www.arm.com/products/CPUs/ARM11MPCoreMultiprocessor.html)
關于512M的大小和地址限制,沒辦法,MIPS和SH 硬件上就這么訪問虛擬內存地址空間的,所以只要CE一天要兼容這2個玩意,這個包袱還得一直背下去。2013年6月份發布的Windows Embedded Compact 2013就只支持ARM和x86內核,見http://blog.csdn.net/loongembedded/article/details/12841535
總結
以上是生活随笔為你收集整理的Windows CE,你妈吗喊你在多核上玩玩的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xp宿主机和VMware下Ubuntu1
- 下一篇: Windows Embedded Com