亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種多核處理器系統(tǒng)和緩存一致性處理方法

文檔序號(hào):9274643閱讀:509來(lái)源:國(guó)知局
一種多核處理器系統(tǒng)和緩存一致性處理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù),尤指一種多核處理器系統(tǒng)和緩存一致性處理方法。
【背景技術(shù)】
[0002] 多核處理器系統(tǒng)的各處理器內(nèi)核通常依據(jù)緩存一致性協(xié)議進(jìn)行緩存一致性的維 護(hù),緩存一致性協(xié)議直接影響多核處理器系統(tǒng)的數(shù)據(jù)訪問(wèn)性能,進(jìn)而影響多核處理器的整 體性能。
[0003] 目前通常使用的緩存一致性協(xié)議包括MESIF協(xié)議和MOESI協(xié)議。一方面,MESIF協(xié) 議通過(guò)在MESI協(xié)議中引入轉(zhuǎn)發(fā)(Forwarding,簡(jiǎn)稱(chēng)為:F)態(tài),在多核處理器系統(tǒng)中存在多個(gè) 共享(Shared,簡(jiǎn)稱(chēng)為:S)態(tài)cache行,并且此時(shí)有一處理器內(nèi)核請(qǐng)求讀取該些S態(tài)高速緩 沖存儲(chǔ)器(cache)行中的數(shù)據(jù)時(shí),可以將其中一個(gè)S態(tài)cache行的狀態(tài)更改為F態(tài),并轉(zhuǎn)發(fā) 該F態(tài)cache行中的數(shù)據(jù),解決了 MESI協(xié)議中S態(tài)的cache行中的數(shù)據(jù)不能轉(zhuǎn)發(fā)的問(wèn)題, 從而減少了對(duì)內(nèi)存的訪問(wèn)次數(shù);然而,當(dāng)修改(Modified,簡(jiǎn)稱(chēng)為:M)態(tài)的cache行變更為S 態(tài)時(shí),仍然需要即刻將cache行中的數(shù)據(jù)寫(xiě)入到內(nèi)存中。另一方面,M0ESI協(xié)議通過(guò)引入擁 有(Owned,簡(jiǎn)稱(chēng)為:0)態(tài),在讀取M態(tài)cache行的數(shù)據(jù)時(shí),將該M態(tài)cache行的狀態(tài)變更為 〇態(tài),用于記錄并延遲該cache行將數(shù)據(jù)寫(xiě)入內(nèi)存的操作,從而避免了 M態(tài)cache行變更為 S態(tài)時(shí)非必要的寫(xiě)回操作,然而,當(dāng)某一處理器內(nèi)核請(qǐng)求讀取多個(gè)S態(tài)cache行中相同的共 享數(shù)據(jù)時(shí),通常的處理方式為:所有的S態(tài)cache行都向該處理器內(nèi)核發(fā)送數(shù)據(jù),或者通過(guò) 訪問(wèn)內(nèi)存來(lái)獲取數(shù)據(jù)。
[0004] 然而,現(xiàn)有技術(shù)中的多核處理器系統(tǒng)在執(zhí)行緩存一致性處理的過(guò)程中,由于內(nèi)存 參與處理的可能性較大,從而導(dǎo)致多核處理器系統(tǒng)的性能較差的問(wèn)題。

【發(fā)明內(nèi)容】

[0005] 為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種多核處理器系統(tǒng)和緩存一致性處理方 法,以解決現(xiàn)有技術(shù)中的多核處理器系統(tǒng)在執(zhí)行緩存一致性處理時(shí),由于內(nèi)存參與處理的 可能性較大,從而導(dǎo)致多核處理器系統(tǒng)的性能較差的問(wèn)題。
[0006] 第一方面,本發(fā)明提供一種多核處理器系統(tǒng),所述多核處理器系統(tǒng)用于執(zhí)行緩存 一致性處理,所述多核處理器系統(tǒng)包括第一處理器內(nèi)核和第二處理器內(nèi)核,所述多核處理 器系統(tǒng)中的cache行具有修改M態(tài)、獨(dú)占E態(tài)、保持K態(tài)、無(wú)效I態(tài)和轉(zhuǎn)發(fā)F態(tài);
[0007] 所述第一處理器內(nèi)核,用于向所述第二處理器內(nèi)核發(fā)送第一請(qǐng)求消息,所述第一 請(qǐng)求消息用于請(qǐng)求對(duì)所述第二處理器內(nèi)核中的第一 cache行進(jìn)行讀操作,所述第一 cache 行處于M態(tài)或E態(tài);
[0008] 所述第二處理器內(nèi)核,用于當(dāng)接收到所述第一請(qǐng)求消息后,將所述第一 cache行 中的數(shù)據(jù)攜帶在第一響應(yīng)消息中發(fā)送給所述第一處理器內(nèi)核,并將所述第一 cache行的狀 態(tài)更改為K態(tài),其中,所述第二處理器內(nèi)核,還用于在將所述第一 cache行的狀態(tài)由M態(tài)更 改為K態(tài)后,忽略將所述第一 cache行中的數(shù)據(jù)寫(xiě)入所述內(nèi)存的操作;
[0009] 所述第一處理器內(nèi)核,還用于當(dāng)接收到所述第一響應(yīng)消息后,將所述第一 cache 行中的數(shù)據(jù)讀入所述第一處理器內(nèi)核中與所述第一 cache行地址相同的第二cache行中, 并將所述第二cache行的狀態(tài)由I態(tài)更改為F態(tài)。
[0010] 在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述第一處理器內(nèi)核,還用于在向所述 第二處理器內(nèi)核發(fā)送第一請(qǐng)求消息之前,向第二cache發(fā)送第二請(qǐng)求消息,所述第二請(qǐng)求 消息用于請(qǐng)求對(duì)所述第二cache行進(jìn)行讀操作;
[0011] 所述第一處理器內(nèi)核,還用于當(dāng)所述第二cache行為K態(tài)、F態(tài)、E態(tài)或M態(tài)時(shí),接 收所述第二cache發(fā)送的第二響應(yīng)消息,并保持所述第二cache行的當(dāng)前狀態(tài),其中,所述 第二響應(yīng)消息中包括所述第二cache行中的數(shù)據(jù),當(dāng)所述第二cache行為I態(tài)時(shí),向所述第 二處理器內(nèi)核發(fā)送第一請(qǐng)求消息。
[0012] 在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述多核處理器系統(tǒng)還包括第三處理器 內(nèi)核,所述第三處理器內(nèi)核中的第三cache行與所述第二cache行和所述第一 cache行的 地址相同;
[0013] 所述第三處理器內(nèi)核,用于在所述第三cache行為I態(tài)時(shí),向所述第一處理器內(nèi) 核和所述第二處理器內(nèi)核發(fā)送第三請(qǐng)求消息,所述第三請(qǐng)求消息用于請(qǐng)求對(duì)與所述第三 cache行地址相同的cache行進(jìn)行讀操作;
[0014] 所述第一處理器內(nèi)核,還用于當(dāng)接收到所述第三請(qǐng)求消息后,且所述第二cache 行處于F態(tài)時(shí),將所述第二cache行中的數(shù)據(jù)攜帶在第三響應(yīng)消息中發(fā)送給所述第三處理 器內(nèi)核,并將所述第二cache行的狀態(tài)由F態(tài)更改為K態(tài);
[0015] 所述第二處理器內(nèi)核,還用于當(dāng)接收到所述第三請(qǐng)求消息后,且所述第一 cache 行處于K態(tài)時(shí),根據(jù)所述第一 cache行的狀態(tài)忽略應(yīng)答所述第三請(qǐng)求消息,并保持所述第一 cache行處于K態(tài);
[0016] 所述第三處理器內(nèi)核,還用于接收所述第三響應(yīng)消息,將所述第二cache行中的 數(shù)據(jù)讀入所述第三cache行中,并將所述第三cache行的狀態(tài)由I態(tài)更改為F態(tài)。
[0017] 在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述多核處理器系統(tǒng)還包括第三處理器 內(nèi)核,所述第三處理器內(nèi)核中的第三cache行與所述第二cache行和所述第一 cache行的 地址相同;
[0018] 所述第三處理器內(nèi)核,用于向所述第一處理器內(nèi)核和所述第二處理器內(nèi)核發(fā)送第 四請(qǐng)求消息,所述第四請(qǐng)求消息用于指示對(duì)所述第三cache行進(jìn)行寫(xiě)操作;
[0019] 所述第一處理器內(nèi)核,還用于當(dāng)接收到所述第四請(qǐng)求消息后,且所述第二cache 行處于F態(tài)時(shí),根據(jù)所述第四請(qǐng)求消息將所述第二cache行的狀態(tài)由F態(tài)更改為I態(tài),并向 所述第三處理器內(nèi)核發(fā)送第四響應(yīng)消息;
[0020] 所述第二處理器內(nèi)核,還用于當(dāng)接收到所述第四請(qǐng)求消息后,且所述第一 cache 行處于K態(tài)時(shí),根據(jù)所述第四請(qǐng)求消息將所述第一 cache行的狀態(tài)由K態(tài)更改為I態(tài),并向 所述第三處理器內(nèi)核發(fā)送第四響應(yīng)消息;
[0021 ] 所述第三處理器內(nèi)核,還用于分別接收所述第一處理器內(nèi)核和所述第二處理器內(nèi) 核發(fā)送的第四響應(yīng)消息,根據(jù)所述接收到的第四響應(yīng)消息對(duì)所述第三cache行進(jìn)行寫(xiě)操 作,并將所述第三cache行的狀態(tài)更改為M態(tài)。
[0022] 根據(jù)第一方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述第三 處理器內(nèi)核,還用于在向所述第一處理器內(nèi)核和所述第二處理器內(nèi)核發(fā)送第四請(qǐng)求消息之 前,向所述第三cache發(fā)送第五請(qǐng)求消息,所述第五請(qǐng)求消息用于請(qǐng)求對(duì)所述第三cache行 進(jìn)行寫(xiě)操作;
[0023] 所述第三處理器內(nèi)核,還用于當(dāng)所述第三cache行為E態(tài)或M態(tài)時(shí),接收所述第三 cache發(fā)送的第五響應(yīng)消息,根據(jù)所述第五響應(yīng)消息對(duì)所述第三cache行進(jìn)行寫(xiě)操作,并將 所述第三cache行的狀態(tài)更改為M態(tài),當(dāng)所述第三cache行為I態(tài)、K態(tài)或F態(tài)時(shí),向所述 第一處理器內(nèi)核和所述第二處理器內(nèi)核發(fā)送第四請(qǐng)求消息。
[0024] 根據(jù)第一方面、第一方面的第一種到第三種可能的實(shí)現(xiàn)方式中任意一種,在第五 種可能的實(shí)現(xiàn)方式中,任一所述處理器內(nèi)核,還用于在對(duì)任一 K態(tài)cache行進(jìn)行讀操作或?qū)?操作,且所述K態(tài)cache行已填滿時(shí),將所述K態(tài)cache行中的數(shù)據(jù)替換為待讀取或待寫(xiě)入 的數(shù)據(jù);和/或,
[0025] 任一所述處理器內(nèi)核,還用于在對(duì)任一 F態(tài)cache行進(jìn)行讀操作或?qū)懖僮鳎宜?F態(tài)cache行已填滿時(shí),檢測(cè)所述多核處理器系統(tǒng)中是否存在與所述F態(tài)cache行的地址相 同的K態(tài)cache行;
[0026] 若存在,則將其中一個(gè)與所述F態(tài)cache行的地址相同的K態(tài)cache行的狀態(tài)更 改為F態(tài),并將所述F態(tài)cache行中的數(shù)據(jù)替換為待讀取或待寫(xiě)入的數(shù)據(jù);
[0027] 若不存在,則將所述F態(tài)cache行中的數(shù)據(jù)存入所述多核處理器系統(tǒng)的內(nèi)存中,并 將所述F態(tài)cache行中的數(shù)據(jù)替換為待讀取或待寫(xiě)入的數(shù)據(jù)。
[0028] 第二方面,本發(fā)明提供一種緩存一致性處理方法,執(zhí)行所述緩存處理方法的多核 處理器系統(tǒng)包括第一處理器內(nèi)核、第二處理器內(nèi)核和內(nèi)存,所述多核處理器系統(tǒng)中的cache 行具有修改M態(tài)、獨(dú)占E態(tài)、保持K態(tài)、無(wú)效I態(tài)和轉(zhuǎn)發(fā)F態(tài),所述方法包括:
[0029] 所述第一處理器內(nèi)核向所述第二處理器內(nèi)核發(fā)送第一請(qǐng)求消息,所述第一請(qǐng)求消 息用于請(qǐng)求對(duì)所述第二處理器內(nèi)核中的第一 cache行進(jìn)行讀操作,所述第一 cache行處于 M態(tài)或E態(tài);
[0030] 所述第二處理器內(nèi)核將所述第一 cache行中的數(shù)據(jù)攜帶在第一響應(yīng)消息中發(fā)送 給所述第一處理器內(nèi)核,并將所述第一 cache行的狀態(tài)更改為K態(tài),其中,所述第二處理器 內(nèi)核在將所述第一 cache行的狀態(tài)由M態(tài)更改為K態(tài)后,忽略將所述第一 cache行中的數(shù) 據(jù)寫(xiě)入所述內(nèi)存的操作;
[0031] 所述第一處理器內(nèi)核將所述第一 cache行中的數(shù)據(jù)讀入所述第一處理器內(nèi)核中 與所述第一 cache行地址相同的第二cache行中;
[0032] 所述第一處理器內(nèi)核將所述第二cache行的狀態(tài)由I態(tài)更改為F態(tài)。
[0033] 在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述第一處理器內(nèi)核向所述第二處理器 內(nèi)核發(fā)送第一請(qǐng)求消息之前,還包括:
[0034] 所述第一處理器內(nèi)核向所述第二cache發(fā)送第二請(qǐng)求消息,所述第二請(qǐng)求消息用 于請(qǐng)求對(duì)所述第二cache行進(jìn)行讀操作;
[0035] 所述第一處理器內(nèi)核判斷所述第二cache行的狀態(tài)是否為I態(tài);
[0036] 若否,則所述第一處理器內(nèi)核接收所述第二cache發(fā)送的第二響應(yīng)消息,并保持 所述第二cache行的當(dāng)前狀態(tài),其中,所述第二響應(yīng)消息中包括所述第二cache行中的數(shù) 據(jù);
[0037] 若是,則所述第一處理器內(nèi)核向所述第二處理器內(nèi)核發(fā)送第一請(qǐng)求消息。
[0038] 在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述多核處理器系統(tǒng)還包括第三處理器 內(nèi)核,所述第三處理器內(nèi)核中的第三cache行與所述第二cache行和所述第一 cache行的 地址相同;所述方法還包括:
[0039] 所述第三處理器內(nèi)核在所述第三cache行為I態(tài)時(shí),向所述第一處理器內(nèi)核和所 述第二處理器內(nèi)核發(fā)送第三請(qǐng)求消息,所述第三請(qǐng)求消息用于請(qǐng)求對(duì)與所述第三cache行 地址相同的cache行進(jìn)行讀操作;
[0040] 所述第一處理器內(nèi)核在所述第二cache行處于F態(tài)時(shí),將所述第二cache行中的 數(shù)據(jù)攜帶在第三響應(yīng)消息中發(fā)送給所述第三處理器內(nèi)核,并將所述第二cache行的狀態(tài)由 F態(tài)更改為K態(tài);
[0041] 所述第二處理器內(nèi)核在所述第一 cache行處于K態(tài)時(shí),根
當(dāng)前第1頁(yè)1 2 3 4 5 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1