寫了硬件的發(fā)展史之后,屬于歷史,那么我們也要展望一下未來(lái)的可能性。所以就有了今天這一篇。我們知道硬件的設(shè)計(jì)需求是根據(jù)具體使用場(chǎng)景的遇到的痛點(diǎn),然后可能會(huì)提出新的需求。
我們也會(huì)發(fā)現(xiàn)各個(gè)架構(gòu)有一定的趨同性,無(wú)論是x86還是arm也在相互學(xué)習(xí),x86學(xué)習(xí)arm的低功耗,arm也想提高性能。所以精簡(jiǎn)指令和復(fù)雜指令不再那么純粹。各種總線也在相互借鑒,比如都有內(nèi)存分頁(yè),除了寄存器定義不同,宏觀上的分頁(yè)結(jié)構(gòu)基本是一致的。所以好的東西都在用,這樣對(duì)軟件也有一個(gè)好處,硬件形態(tài)的設(shè)計(jì)規(guī)范,會(huì)使得軟件的移植性更好。
除了一些特定使用場(chǎng)景的硬件設(shè)計(jì),我們普遍希望的是提高處理速度。我們以服務(wù)器使用場(chǎng)景為例子,來(lái)一些可能已經(jīng)存在的猜測(cè),然后我們?cè)僬雇幌挛磥?lái)處理器(光子計(jì)算機(jī)和量子計(jì)算機(jī)等)的形態(tài)對(duì)于編程的影響
先說(shuō)可能存在的猜想。我們說(shuō)過(guò)服務(wù)器為了提高吞吐量,是分布式的,提高穩(wěn)定性支持內(nèi)存,cpu的熱插拔等。那么為了提高性能。
在一個(gè)服務(wù)器主板上可能是怎樣的呢?是單個(gè)操作系統(tǒng)還是多個(gè)操作系統(tǒng)呢?對(duì)于同構(gòu)的處理器可以是單個(gè)系統(tǒng)。對(duì)于異構(gòu)的只能是多個(gè)系統(tǒng)。假設(shè)猜測(cè)是多操作系統(tǒng)之間的配合協(xié)調(diào)。實(shí)際也有可能是一個(gè)分布式的操作系統(tǒng)。單系統(tǒng)。但是不影響我們說(shuō)明問(wèn)題。
我們假設(shè)我們?cè)L問(wèn)百度,百度不可能只有一個(gè)機(jī)房,一個(gè)機(jī)房不可能只有一個(gè)服務(wù)器。這些從百度的網(wǎng)址找到具體的服務(wù)器(通常肯定是多個(gè),然后負(fù)載均衡)。我們就假設(shè)找到了一個(gè)服務(wù)器,然后這個(gè)服務(wù)器的形態(tài)是怎樣的會(huì)好呢。我們猜測(cè)的硬件形態(tài)如下圖:
![poYBAGJfzBWAaL_lAABGQdS90Ck236.png](https://file.elecfans.com/web2/M00/3E/39/poYBAGJfzBWAaL_lAABGQdS90Ck236.png)
注意這里的cpu1,2,3表示的不是core,而是一顆多核心的cpu。由于我們假設(shè)是多系統(tǒng)的,那么我們就假設(shè)這幾個(gè)cpu都跑linux,系統(tǒng)在各自cpu的local memory里面。然后global memory是每個(gè)cpu都可以訪問(wèn)的。這樣這幾個(gè)cpu之間就可以通過(guò)共享內(nèi)存來(lái)通信,至于gloabl memory里面是什么結(jié)構(gòu)來(lái)組織的實(shí)現(xiàn)共享內(nèi)存通信,這個(gè)是實(shí)現(xiàn)問(wèn)題。假設(shè)global里面有一個(gè)內(nèi)存數(shù)據(jù)庫(kù)。這樣相當(dāng)于多個(gè)cpu使用了一個(gè)內(nèi)存數(shù)據(jù)庫(kù)。或者是一個(gè)內(nèi)存文件系統(tǒng),那么多個(gè)cpu之間共享了一個(gè)文件系統(tǒng)。或者更簡(jiǎn)單的一些消息通信機(jī)制,比如就是個(gè)類似ringbuffer的東西,這樣cpu之間可以根據(jù)定義的ringbuffer的結(jié)構(gòu)通信。
服務(wù)器重要的是什么一個(gè)是速度,還有一個(gè)是數(shù)據(jù)的備份,保存,數(shù)據(jù)庫(kù)之類的。數(shù)據(jù)庫(kù)有內(nèi)存數(shù)據(jù)庫(kù)redis,還有磁盤數(shù)據(jù)庫(kù)mysql之類的。所以最終的數(shù)據(jù)都要進(jìn)入磁盤。所以這個(gè)就有一個(gè)矛盾并發(fā)和互斥訪問(wèn)的矛盾。為了速度我們?cè)诓粩嗟奶岣卟l(fā)的可能,提高單個(gè)核心的速度,但是對(duì)于同一個(gè)數(shù)據(jù)庫(kù),同一個(gè)總線,同一塊內(nèi)存,同一個(gè)磁盤的訪問(wèn)總會(huì)互斥,有些是硬件上要支持的互斥,有些是軟件保證的互斥。所以就要考慮盡量減少互斥的范圍。
目前的情況是我們的cpu的兩個(gè)核心,訪問(wèn)內(nèi)存的時(shí)候,是互斥訪問(wèn)的,因?yàn)槭峭粋€(gè)總線。那么有沒(méi)有這樣一種可能,如下圖:
![pYYBAGJfzB2AY6HXAABGfJgYiTM272.png](https://file.elecfans.com/web2/M00/3E/3F/pYYBAGJfzB2AY6HXAABGfJgYiTM272.png)
如上圖我們兩顆cpu訪問(wèn)同一內(nèi)存條假設(shè)20G,那么紅色的部分就要保證互斥訪問(wèn),訪問(wèn)者,要先獲得總線所有權(quán),然后訪問(wèn)釋放。對(duì)于整個(gè)20G的地址空間都要互斥。這樣互斥的共享空間限制太大了20個(gè)G。由硬件保證在微觀上兩個(gè)cpu訪問(wèn)內(nèi)存條是互斥訪問(wèn)的。
那么我做一個(gè)猜想有沒(méi)有這樣一種memory,比如可以提供2,4,8個(gè)通道,這樣多個(gè)cpu使用不同的通道,只要訪問(wèn)地址不同,就在硬件上,不會(huì)爭(zhēng)奪總線。或者難以實(shí)現(xiàn)的話,我們?nèi)趸恍?K為一個(gè)地址范圍。比如這20G的地址空間是0-20G,那么假設(shè)一個(gè)cpu訪問(wèn)的地址是0《addr《4K,如果另外一個(gè)cpu也訪問(wèn)這個(gè)內(nèi)存條,那么如果地址范圍也在0-4K那么就要總線互斥,但是如果訪問(wèn)的是4k-8k,那么就可以不需要總線互斥,在微觀上,硬件上確實(shí)做到一定程度的并發(fā)訪問(wèn)。猜測(cè)的可能的硬件形態(tài)如下圖:
![pYYBAGJfzCSANkxpAABH90k8d-4971.png](https://file.elecfans.com/web2/M00/3E/3F/pYYBAGJfzCSANkxpAABH90k8d-4971.png)
如上圖,cpu1通過(guò)紅色的總線訪問(wèn)這個(gè)內(nèi)存條,cpu2通過(guò)綠色的總線訪問(wèn)這個(gè)內(nèi)存條,內(nèi)存條出廠的時(shí)候有一個(gè)判斷電路,看紅色和綠色的地址是否4K空間沖突。如果不沖突,那么可以微觀上完全并發(fā),如果沖突,那么就只能互斥訪問(wèn)。
異構(gòu)內(nèi)存文件系統(tǒng) :可能沒(méi)有這個(gè)概念,是我臆造的,不知道是否存在。
我們的總線上有多顆cpu,每顆都有自己的系統(tǒng),但是我們的memory里面可以有一個(gè)內(nèi)存文件系統(tǒng),我把它叫做異構(gòu)共享文件系統(tǒng),兩顆cpu都可以訪問(wèn),并且兩個(gè)cpu里面可以跑不同的系統(tǒng),也不要求是同一種硬件架構(gòu)。如下圖:
![poYBAGJfzCyAW8qXAABM49HzPeI510.png](https://file.elecfans.com/web2/M00/3E/39/poYBAGJfzCyAW8qXAABM49HzPeI510.png)
前面的一些屬于一些合理猜測(cè)或者臆造,不知道是否存在,也許還真的已經(jīng)存在。
接下來(lái)我們說(shuō)光子計(jì)算機(jī)和量子計(jì)算機(jī)。有一段時(shí)間炒作的很火,我們不說(shuō)炒作嫌疑,畢竟無(wú)論什么行業(yè)剛開(kāi)始都會(huì)有夸大炒作。但是只要發(fā)展方向是對(duì)的遲早實(shí)現(xiàn),就是時(shí)間問(wèn)題。
光子計(jì)算機(jī)低功耗,速度快,量子計(jì)算機(jī)更是速度快。那么假設(shè)這些最終都實(shí)現(xiàn)了,那么編程的形態(tài)會(huì)不會(huì)變化?我們現(xiàn)在學(xué)習(xí)的編程語(yǔ)言,編程思想,整個(gè)軟件生態(tài)還能不能用?
我認(rèn)為對(duì)于軟件生態(tài)是一個(gè)機(jī)會(huì),可能c語(yǔ)言,java語(yǔ)言等等各種編程語(yǔ)言還能用,也許會(huì)有新的語(yǔ)言出來(lái)。新的系統(tǒng)出來(lái)。這個(gè)對(duì)于整個(gè)軟件生態(tài)都是機(jī)會(huì)。新的計(jì)算形態(tài)完全沒(méi)有必要整個(gè)將老的推翻。而是適配向上兼容。
也許新的計(jì)算機(jī)表示信息不再是2進(jìn)制,都不好說(shuō),但是我們的高級(jí)語(yǔ)言是通過(guò)編譯器編譯的。對(duì)于語(yǔ)言不需要知道計(jì)算機(jī)信息表示是幾進(jìn)制。這個(gè)通過(guò)編譯工具鏈掩蓋了。
所以新的針對(duì)光子處理器,量子形態(tài)的處理器會(huì)出現(xiàn)對(duì)應(yīng)的編譯工具鏈。向上兼容現(xiàn)有的軟件生態(tài)(語(yǔ)言,系統(tǒng),工具),也許不完全兼容,但是大部分兼容。我們?cè)诹孔佑?jì)算機(jī)和光子計(jì)算機(jī)上運(yùn)行我們?cè)瓉?lái)在傳統(tǒng)計(jì)算機(jī)上的程序,我們不需要知道底層是光子計(jì)算機(jī)還是量子計(jì)算機(jī)。就像我們寫的程序。我們用不同的工具鏈編譯運(yùn)行。我們不需要知道是x86的還是arm的一樣。這就是向上兼容。通過(guò)編譯工具來(lái)翻譯。加上光子計(jì)算機(jī)和量子計(jì)算機(jī)的速度的極大提升,會(huì)出現(xiàn)新的針對(duì)這么高速度的的操作系統(tǒng),新的軟件生態(tài)的擴(kuò)充,而不是消滅老的。對(duì)于軟件來(lái)說(shuō)反而是機(jī)會(huì)。也許會(huì)出現(xiàn)新的針對(duì)該種計(jì)算機(jī)的新的編程語(yǔ)言,但是完全不會(huì)消滅老的語(yǔ)言。新的應(yīng)用場(chǎng)景會(huì)出現(xiàn),同樣對(duì)于應(yīng)用編程者也是機(jī)會(huì)。
-
cpu
+關(guān)注
關(guān)注
68文章
10911瀏覽量
213152 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9335瀏覽量
86141 -
量子計(jì)算機(jī)
+關(guān)注
關(guān)注
4文章
533瀏覽量
25578
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
浮點(diǎn)處理器相對(duì)于定點(diǎn)處理器有何不同
![浮點(diǎn)<b class='flag-5'>處理器</b>相<b class='flag-5'>對(duì)于</b>定點(diǎn)<b class='flag-5'>處理器</b>有何不同](https://file.elecfans.com/web1/M00/46/7B/o4YBAFqfOBiAG1UQAABoDt_DQ50783.png)
ARM微處理器編程基礎(chǔ)和接口實(shí)驗(yàn)
基于arduino Nano的ATtiny微處理器編程器
ARM微處理器的編程模型
ARM微處理器的編程模型
基于坐標(biāo)邏輯的形態(tài)圖像處理器的硬件實(shí)現(xiàn)
淺談數(shù)字信號(hào)處理器的分類及選擇
如何實(shí)現(xiàn)坐標(biāo)邏輯的形態(tài)圖像處理器
![如何實(shí)現(xiàn)坐標(biāo)邏輯的<b class='flag-5'>形態(tài)</b>圖像<b class='flag-5'>處理器</b>](https://file.elecfans.com/web1/M00/E7/F0/pIYBAGBivVqAcL6hAABme0QFQsQ204.png)
評(píng)論