《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 解決方案 > 計(jì)算機(jī)系統(tǒng)原理(四) 并發(fā)與并行、淺談抽象

計(jì)算機(jī)系統(tǒng)原理(四) 并發(fā)與并行、淺談抽象

2017-06-22
關(guān)鍵詞: 匯編語(yǔ)言

引言

并發(fā)與并行一直是IT界炙手可熱的詞匯,相信各位猿友都不會(huì)陌生。在計(jì)算機(jī)系統(tǒng)這本書當(dāng)中,對(duì)并發(fā)與并行的解釋是,并發(fā)是指一個(gè)同時(shí)具有多個(gè)活動(dòng)的系統(tǒng),而并行則是指的用并發(fā)使得一個(gè)系統(tǒng)運(yùn)行的更快。

這與LZ之前的理解應(yīng)該是不沖突的,在LZ之前看來(lái),并發(fā)是一種模式,而并行是實(shí)現(xiàn)這種模式的手段之一。

線程級(jí)并發(fā)

在進(jìn)程的抽象概念下引入了線程,而線程級(jí)并發(fā)的概念,就是指的多個(gè)線程在同一時(shí)間(并非是絕對(duì)同時(shí)的)活動(dòng)。

操作系統(tǒng)從單處理器,直到現(xiàn)在多核多處理器系統(tǒng),乃至超線程技術(shù),已經(jīng)經(jīng)歷了很大的變化。這也使得針對(duì)多線程編程變得更加重要,否則就無(wú)法利用多處理器帶來(lái)的好處。

針對(duì)多處理器系統(tǒng)來(lái)說(shuō),比較好理解,其實(shí)就是物理上將多個(gè)CPU集中在一個(gè)集成電路的芯片上。而對(duì)于超線程技術(shù)來(lái)說(shuō),則是利用N個(gè)物理內(nèi)核,模擬出2N個(gè)邏輯內(nèi)核的技術(shù)。在硬件上來(lái)講,超線程需要CPU的某些部分有多個(gè)備份,比如寄存器和程序計(jì)數(shù)器,但是其它部分只有一份,比如ALU。

指令級(jí)并行

在書中,對(duì)指令級(jí)并行的解釋是,如果處理器可以同時(shí)執(zhí)行多條指令,則稱這種屬性為指令級(jí)并行。其實(shí)指令級(jí)并行就是利用了指令的執(zhí)行過(guò)程中會(huì)有不同的階段,或者更精確的說(shuō),是在同一時(shí)間只會(huì)利用部分CPU的硬件,因此可以利用這一點(diǎn)做到多個(gè)指令并行執(zhí)行。

更好的情況下,現(xiàn)代的很多處理器能夠做到執(zhí)行一條指令的平均時(shí)間尚且不到一個(gè)周期,這種處理器就稱為超標(biāo)量處理器。

單指令、多數(shù)據(jù)并行


單指令、多數(shù)據(jù)的概念是指一條指令可以產(chǎn)生多個(gè)并行執(zhí)行的操作的方式。當(dāng)今的一些處理器中配備了特殊的硬件,可以達(dá)到這個(gè)效果。由于產(chǎn)生了多個(gè)并行執(zhí)行的操作,因此就會(huì)涉及到多個(gè)數(shù)據(jù),通俗的講也可以理解為,一條指令操作多個(gè)數(shù)據(jù)。比如書中所提到的例子,一些處理器具有并行地對(duì)4對(duì)單精度浮點(diǎn)數(shù)做加法的指令。

簡(jiǎn)談抽象

抽象的重要性就不需要再?gòu)?qiáng)調(diào)了,它在計(jì)算機(jī)科學(xué)領(lǐng)域有著不言而喻的地位。抽象可以使得一些具體的實(shí)現(xiàn)變的更加易于描述,而且也可以針對(duì)一些實(shí)現(xiàn)的方式作出規(guī)定。

舉個(gè)簡(jiǎn)單的例子,就JAVA中的類來(lái)說(shuō),它其實(shí)是通過(guò)編譯器和JVM來(lái)實(shí)現(xiàn)的,而JVM本身又是一個(gè)抽象的概念,它也會(huì)有具體的實(shí)現(xiàn)。倘若針對(duì)我們平時(shí)使用的hotspot虛擬機(jī)來(lái)說(shuō),類的實(shí)現(xiàn)是將類的信息存放在永久代,而后將實(shí)例存放在堆中,并且在每一個(gè)實(shí)例中,都會(huì)存放一個(gè)類信息的引用。從而我們?cè)诓僮鬟@個(gè)實(shí)例的時(shí)候,會(huì)通過(guò)類信息確定我們所做的操作并執(zhí)行它。

以上是LZ對(duì)類實(shí)現(xiàn)的個(gè)人理解,對(duì)JVM不太熟悉的猿友們可能對(duì)這個(gè)描述比較迷惑。但是沒(méi)關(guān)系,你只需要知道class可以聲明一個(gè)類,并且在你創(chuàng)建了一個(gè)實(shí)例之后,使用實(shí)例名.方法名可以調(diào)用它的方法,實(shí)例名.變量名可以取得它的屬性值就可以了(在此簡(jiǎn)單起見(jiàn),忽略訪問(wèn)權(quán)限限制)。這就使得我們操作類的時(shí)候變的簡(jiǎn)單,也正是抽象的意義之一,也是上面對(duì)抽象描述的第一句話的解釋。

對(duì)于后面一句就比較好理解了,JAVA虛擬機(jī)是一種抽象,有了這個(gè)抽象,我們就可以針對(duì)JAVA虛擬機(jī)制定規(guī)范,也就是JAVA虛擬機(jī)規(guī)范。

文章小結(jié)

本次我們簡(jiǎn)單了解了一下并發(fā)和并行的概念,以及抽象對(duì)于計(jì)算機(jī)科學(xué)的重要意義。

下一章LZ將和各位猿友一起進(jìn)入一個(gè)嶄新的世界,那里有很多1和0的數(shù)字,有很多定理與證明,因此這部分可能比較枯燥。如果LZ的解釋不能讓各位猿友更好的理解這本書的內(nèi)容,各位猿友也可以看書中的原版內(nèi)容,或者拿著書和LZ的文章對(duì)照著看都可以。不過(guò)LZ還是希望各位不要半途而廢,畢竟實(shí)踐雖然重要,但還是需要理論的支撐的。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。