計(jì)算機(jī)如何實(shí)現(xiàn)并發(fā)?處理器與內(nèi)存如何交互?白話講解包你看懂!
作為軟件開發(fā)的程序員,每天可能會(huì)面對(duì)***甚至***的數(shù)據(jù)處理,對(duì)于這樣大數(shù)據(jù)的處理,并發(fā)是必不可少的。在程序員編寫代碼的時(shí)候,會(huì)從各個(gè)方面來考慮去把軟件的并發(fā)性做好,保證在多用戶,多線程的條件下,程序有條不紊的運(yùn)行。
小編作為一個(gè)Java軟件開發(fā)程序員,每天考慮的都是如何保證線程的安全,確保程序的高效并發(fā)。但是,這些都是從軟件層面去考慮的,我們會(huì)考慮使用同步方法、同步代碼塊、原子類、并發(fā)鎖、volatile關(guān)鍵字等等一些列方式去保證程序的并發(fā)不會(huì)出現(xiàn)錯(cuò)誤。
大數(shù)據(jù)需要高并發(fā)
但是,我們卻很少?gòu)挠布慕嵌热タ紤]并發(fā)問題,甚至不知道我們的計(jì)算機(jī)是如何進(jìn)行并發(fā)的。所以,今天我們不談軟件,我們來講一講我們的電腦,我們的服務(wù)器以及各種硬件是如何實(shí)現(xiàn)并發(fā),并且保證并發(fā)不會(huì)出錯(cuò)的!
學(xué)過Java語言的人都知道,Java有JVM,也就是Java的虛擬機(jī),JVM就有很好的并發(fā)能力,今天我們講的物理計(jì)算機(jī)的并發(fā)和JVM有很多相似的地方。所以,了解了物理計(jì)算機(jī)的并發(fā)知識(shí)后,對(duì)學(xué)習(xí)JVM會(huì)有很大的幫助!
計(jì)算機(jī)為什么要并發(fā)?
為什么要并發(fā)?因?yàn)槿祟惖呢澙罚∫驗(yàn)槿祟愊胍蛴?jì)算機(jī)索取更多!人類想要一步,進(jìn)一步的壓榨計(jì)算機(jī)。所以,為了更高效的利用計(jì)算機(jī)的計(jì)算能力,人類想出來了讓計(jì)算機(jī)并發(fā)執(zhí)行多個(gè)任務(wù)的辦法!
高速處理器與低速存儲(chǔ)之間的矛盾
我們都知道,計(jì)算機(jī)中的處理器決定了計(jì)算機(jī)的處理速度,現(xiàn)代處理器的計(jì)算速度是驚人的。但是,處理器并不能自己?jiǎn)为?dú)工作,至少在進(jìn)行運(yùn)算時(shí)需要與進(jìn)行內(nèi)存交互,讀取數(shù)據(jù),或是寫入數(shù)據(jù)。內(nèi)存這種存儲(chǔ)設(shè)備的速度是沒有辦法和處理器相比的,這就造成了造成了處理器計(jì)算能力的浪費(fèi)。這種矛盾就猶如人民日益增長(zhǎng)的美好生活需要和不平衡不充分的發(fā)展之間的矛盾一樣,需要聰明的程序員去解決!
調(diào)和處理器與內(nèi)存的矛盾
聰明的人類想到一個(gè)辦法,他們?cè)谔幚砥髋c內(nèi)存中間,增加一層高速緩存,這層緩存作為處理器與內(nèi)存之間的緩沖區(qū)。將需要處理的數(shù)據(jù)放入高速緩存,處理結(jié)束后再重新放入到內(nèi)存中,這樣就處理器就不需要無盡的等待與內(nèi)存之間的交互。這樣一波操作看似十分的***!但是,請(qǐng)往下看!
高速緩存帶來的并發(fā)問題
高速緩存看似***的解決了高速的處理器與低速緩存之間的矛盾。但是,問題確被復(fù)雜化了。在多處理器的系統(tǒng)中,每個(gè)處理器都會(huì)有自己的高速緩存,數(shù)據(jù)都會(huì)被復(fù)制到高速緩存中處理,處理后再放回主內(nèi)存。由于主內(nèi)存是共享的,如果不同處理器高速緩存中的數(shù)據(jù)不同,這樣就會(huì)造成緩存不一致的問題!
解決并發(fā)問題高速緩存并發(fā)問題
高速緩存的數(shù)據(jù)不一致,這種現(xiàn)象就像鄰居家的小孩子吵架,吵到***就需要家長(zhǎng)出面,把矛盾化解掉。對(duì)于計(jì)算機(jī)來說,這個(gè)家長(zhǎng)就是緩存一致性協(xié)議,在讀寫操作時(shí)按照協(xié)議來操作,避免并發(fā)問題。這樣,就***的解決了所有的問題!
處理器、高速緩存、緩存一致性協(xié)議、主內(nèi)存
計(jì)算機(jī)高效并發(fā)的其他操作
除了高效緩存機(jī)制外,還有一些其他的操作也可以提高效率。例如,與Java的指令重排序一樣,處理器也會(huì)根據(jù)執(zhí)行效率,將代碼進(jìn)行重新排序進(jìn)行執(zhí)行。
當(dāng)然,計(jì)算機(jī)提高并發(fā)效率的辦法還有很多,小編日后也會(huì)慢慢道來。