專利名稱:處理器訪問共享數據的方法、裝置及系統的制作方法
技術領域:
本發明涉及計算機領域,尤其涉及處理器訪問共享數據的方法、裝置及系統。
背景技術:
當前,多處理器系統蓬勃發展,其中多處理器通過共享存儲器來處理數據, 是多處理器處理數據的主要方式之一。所謂多處理器共享存儲器是多個處理器 共享單個集中式的存儲器。目前多處理器共享存儲器的結構主要是三級的存儲
結構,即多個處理器中的每個處理器有自己私有的容量比較小的一級高速緩沖
存儲器(Cache),所述多個處理器共享的容量比較大的二級高速緩沖存儲器, 最后所述多個處理器共享海量的單一物理存儲器。具有該種存儲器結構的多處 理系統結構比較簡單,性價比合算,得到了廣泛應用。
但是,當所述多個處理器訪問共享數據時,如果所述多處理器中的各個處 理器的讀寫順序沒有合理的處理,導致多個處理器同時并發的讀寫共享存儲器 中的同一塊存儲區所包含的共享數據,使各處理器的讀寫互相交織,從而導致 任何一個處理器都無法正確的訪問所述共享存儲器中的共享數據。
為了使多個處理器在訪問共享數據時,能夠排他性的訪問共享存儲器中的 共享數據,現有技術中有以下兩種處理方法,該兩種多處理器訪問共享數據的 方法具體為
第一種,采用總線鎖技術,實現多處理器排他性的訪問共享數據。該方法 具體為在處理器訪問共享數據之前,查詢總線是否處于非鎖定狀態,在總線 處于非鎖定狀態時,通過命令將整個總線或者整個存儲系統鎖住,使除了所述處理器以外,其他處理器或者總線設備都不得訪問存儲系統中的共享數據,保 證所述處理器對共享數據的獨占訪問。
該方法雖然可以實現多處理器在并發的讀寫共享數據時排他性的訪問共享 數據,但是,由于該方法是將整個通信總線或者整個存儲系統鎖定,只允許所 述一個處理器使用所述總線和存儲系統,使其他不訪問共享數據的操作也無法 進行,從而導致整個系統的利用率比較低。
第二種,采用軟件鎖技術,實現多處理器排他性的訪問共享數據。所述軟 件鎖,就是一個共享的變量,各處理器通過系統提供的原子操作指令,爭奪這 個變量的某個固定值(比如該固定值為0),哪個處理器獲得了這個值,就代表 哪個處理器獲得了排他性訪問共享數據的權利,便可以排他性的訪問所述共享 數據。
該方法在實現多處理器排他性的訪問共享數據時,由各處理器之間竟爭軟 件鎖來實現排他性的訪問共享數據,不用將整個通信總線或者整個存儲系統鎖 定,即不用將整個通信總線或者整個存儲系統獨占,^使其他非訪問共享數據的
操作可以正常進行,在一定程度上提高了系統的利用率;但是該種通過軟件鎖 技術實現多處理器排他性的訪問共享數據的方法,需要各處理器不停的向存儲 器發出存儲器訪問命令,直到獲取軟件鎖成功為止,使所述處理器無謂的增加 很多無效訪問,而所述存儲系統要不斷的處理所述無效訪問,使存儲系統效率 較低。
發明內容
本發明的實施例提供一種處理器訪問共享數據的方法、裝置及系統,提高 了存儲系統的效率。
為達到上述目的,本發明的實施例采用如下技術方案
6一種處理器訪問共享數據的方法,包括
通過硬件線程向存儲系統發送存儲塊鎖定命令,以指示存儲系統將所述存
儲塊鎖定;
在預設的時鐘周期內,判斷是否接收到所述存儲系統發送的所述存儲塊鎖
定完成信息;
若在預設的時鐘周期內,接收到所述存儲系統發送的所述存儲塊鎖定完成 信息,則調度所述硬件線程訪問所述存儲塊中的共享數據;
若在預設的時鐘周期內,沒有接收到所述存儲系統發送的所述存儲塊鎖定 完成信息,則所述硬件線程繼續等待所述存儲系統發送的存儲塊鎖定完成信息。
一種處理器,包括
發送單元,用于通過硬件線程向存儲系統發送存儲塊鎖定命令,以指示所 述存儲系統將所述存儲塊鎖定;
判斷單元,用于在預設的時鐘周期內,判斷是否接收到所述存儲系統發送 的所述存儲塊鎖定完成信息;
執行單元,用于當在預設的時鐘周期內,所述判斷單元判定接收到所述存 儲系統發送的所述存儲塊鎖定完成信息時,調度所述硬件線程訪問所述存儲塊 中的共享ll據;
所述執行單元,還用于在預設的時鐘周期內,所述判斷單元判定沒有接收 到所述存儲系統發送的所述存儲塊鎖定完成信息,所述硬件線程繼續等待所述 存儲系統發送的存儲塊鎖定完成信息。
一種處理器訪問共享數據的系統,包括處理器系統和存儲系統,所述處理 器系統由至少一個處理器構成;所述處理器通過硬件線程向存儲系統發送存儲 塊鎖定命令,以指示所述存儲系統將所述存儲塊鎖定;在預設的時鐘周期內,判斷是否接收到所述存儲系統發送的所述存儲塊鎖定完成信息;若在預設的時 鐘周期內,接收到所述存儲系統發送的所述存儲塊鎖定完成信息,則調度所述 硬件線程訪問所述存儲塊中的共享數據;若在預設的時鐘周期內,所述處理器 沒有接收到所述存儲系統發送的所述存儲塊鎖定完成信息,則所述硬件線程繼 續等待所述存儲系統發送的存儲塊鎖定完成信息。
所述存儲系統接收所述處理器發送的存儲塊鎖定命令,并將所述存儲塊鎖 定完成信息發送給所述處理器,以指示所述處理器訪問所述鎖定的存儲塊所包 含的共享數據。
本發明技術方案,在處理器訪問共享數據時,通過處理器的硬件線程向所 述存儲系統發送鎖定共享數據所在的存儲塊;并在接收到所述存儲系統返回的 所述存儲塊鎖定完成信息時,通過調度所述硬件線程訪問所述鎖定的存儲塊所 包含的共享數據;使所述處理器獲得所述共享數據的訪問權限時,只需要等待 所述存儲系統發送的所述存儲塊鎖定完成信息即可,不需要不斷的向所述存儲 系統發送訪問所述共享數據的請求信息,使所述存儲系統不用處理過多的無效 訪問,提高了所述存儲系統效率。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施 例或現有技術描述中所需要使用的附圖作筒單地介紹,顯而易見地,下面描述 中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付 出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例1中處理器訪問共享數據的方法流程圖2為本發明實施例1中存儲系統共享數據的方法流程圖3為本發明實施例1和2中處理器的組成框圖;圖4為本發明實施例1和2中存儲系統的組成框圖; 圖5為本發明實施例1中處理器訪問共享數據的系統組成框圖; 圖6為本發明實施例2中處理器訪問共享數據的方法流程圖; 圖7為本發明實施例2中存儲系統共享數據的方法流程圖; 圖8為本發明實施例2中處理器訪問共享數據的系統組成框圖; 圖9為本發明實施例3中處理器訪問共享數據的操作流程圖。
具體實施例方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清 楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是 全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造 性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
實施例1
本發明實施例提供一種處理器訪問共享數據的方法,如圖1所示,該方法 包括
101、 處理器通過硬件線程向存儲系統發送存儲塊鎖定命令,以指示存儲系 統將所述存儲塊鎖定,以^^所述處理器可以排他性的訪問所述共享數據。
102、 在將所述存儲塊的鎖定命令發送給所述存儲系統后,所述處理器需要 在預設的時鐘周期內,判斷是否接收到所述存儲系統發送的所述存儲塊鎖定完 成信息,所述預設的時鐘周期為一經驗值,可以根據存儲系統執行指令的周期 設定;若在預設的時鐘周期內,所述處理器接收到所述存儲系統發送的所述存 儲塊鎖定完成信息,則執行步驟103;若沒有接收到所述存儲系統發送的所述存 儲塊鎖定完成信息,則執行步驟104。
103、 當所述處理器在預設的時鐘周期內,接收到所述存儲系統發送的所述存儲塊鎖定完成的信息時,表明所述處理器獲得了訪問所述存儲塊的權限,所 述處理器調度所述硬件線程訪問所述存儲塊中的共享數據。
104、當所述處理器在預定的時鐘周期內,沒有接收到所述存儲系統發送的 所述存儲塊鎖定完成的信息時,表明所述處理器要訪問的所述存儲塊已被除所 述處理器以外的其他處理器鎖定,目前存儲系統無法將所述存儲塊分配給所述
件線程繼續等待所述存儲系統發送的所述存儲塊鎖定完成信息,直到接收到所 述存儲系統發送的所述存儲塊鎖定完成信息,以便使所述處理器可以訪問所述 存儲塊所包含的共享數據。
本發明實施例提供一種存儲系統共享數據的方法,包括
201、 存儲系統接收處理器發送的存儲塊鎖定命令;所述存儲塊鎖定命令為系統。
202、 執行所述接收到的存儲塊鎖定命令,檢測所述接收到的存儲塊的狀態, 所述存儲塊的狀態包括鎖定狀態和非鎖定狀態;在所述存儲塊處于非鎖定態 時,所述存儲系統將所述存儲塊鎖定,并將所述存儲塊鎖定完成信息發送給所 述處理器,以指示所述處理器訪問被鎖定的所述存儲塊所包含的共享數據。
本發明實施例提供一種處理器,如圖3所示,該處理器包括發送單元31、 判斷單元32和4丸行單元33。
發送單元31用于處理器通過硬件線程向存儲系統發送存儲塊鎖定命令,以 指示所述存儲系統將所述存儲塊鎖定,以便所述處理器可以排他性的訪問所述 存儲塊所包含的共享數據。
在所述處理器將所述存儲塊的鎖定命令通過所述發送單元31發送給所述存儲系統后,所述處理器通過判斷單元32在預設的時鐘周期內,判斷是否接收到
所述存儲系統發送的所述存儲塊鎖定完成信息,所述預設的時鐘周期為一經驗
值,可以根據存儲系統執行指令的周期設定;若所述判定單元32判定所述處理 器在預設的時鐘周期內,接收到所述存儲系統發送的所述存儲塊鎖定完成信息, 則通過所迷執行單元33調度所述硬件線程訪問所迷存儲塊中的共享數據;若所 述判定單元32判定所述處理器在預設的時鐘周期內,沒有接收到所述存儲系統 發送的所述存儲塊鎖定完成信息,所述執行單元33調度所述硬件線程繼續等待 所述存儲系統發送的所述存儲塊鎖定完成信息。
本發明實施例提供一種存儲系統,如圖4包括接收單元41、執行單元42 和發送單元43。
所述接收單元41用于接收處理器發送的存儲塊鎖定命令,所述存儲塊鎖定 命令為一條軟指令命令;在所述存儲系統接收到所述存儲塊鎖定命令后,通過 執行單元42執行所述接收到的存儲塊鎖定命令,檢測所述接收到的存儲塊的狀 態,所述存儲塊的狀態包括鎖定狀態和非鎖定狀態;在所述存儲塊處于非鎖 定狀態時,所述存儲系統將所述存儲塊鎖定;在將所述存儲塊鎖定后,所述存 儲系統通過發送單元43將所述存儲塊鎖定完成信息發送給所述處理器,以指示 所述處理器訪問所述存儲塊所包含的共享數據。
本發明實施例提供一種處理器訪問共享數據的系統,如圖5所示,該系統 包括處理器系統51和存儲系統52,所述處理器系統51由至少一個處理器構成; 所述處理器通過硬件線程向存儲系統發送存儲塊鎖定命令,以指示所述存儲系 統將所述存儲塊鎖定;在預設的時鐘周期內,判斷是否接收到所述存儲系統發 送的所述存儲塊鎖定完成信息;若在預設的時鐘周期內,接收到所述存儲系統 發送的所述存儲塊鎖定完成信息,則處理器調度所述硬件線程訪問所述存儲塊中的共享數據;若在預設的時鐘周期內,所述處理器沒有接收到所述存儲系統
發送的所述存儲塊的鎖定完成信息,則所述硬件線程繼續等待所述存儲系統發 送的存儲塊鎖定完成信息。
所述存儲系統52用于接收所述處理器發送的存儲塊鎖定命令,并將所述存 儲塊鎖定完成的信息發送給所述處理器,以指示所述處理器訪問所述存儲塊所 包含的共享數據。
本發明實施例中,在處理器訪問共享數據時,通過處理器的硬件線程向所 述存儲系統發送鎖定共享數據所在的存儲塊的命令;并在接收到所述存儲系統 返回的所述存儲塊鎖定完成信息時,通過調度所述硬件線程訪問所述存儲塊所 包含的共享數據;使所述處理器獲得所述共享數據的訪問權限時,只需要等待 所述存儲系統發送的所述存儲塊鎖定完成信息即可,不需要不斷的向所述存儲 系統發送訪問所述共享數據的請求信息,使所述存儲系統不用處理過多的無效 訪問,提高了所述存儲系統效率。
實施例2
本發明實施例提供一種處理器訪問共享數據的方法,如圖6所示,該方法 包括
601、處理器通過硬件線程向存儲系統發送存儲塊鎖定命令,以指示存儲系 統將所述存儲塊鎖定,以便所述處理器可以排他性的訪問所述共享數據。
其中,所述存儲塊鎖定命令為一條軟件指令,所述軟件指令包括鎖定命令
該命令可以具體抽象為如下形式LockMem BlockBase,BlockSize,其中, LockMem:為存儲塊鎖定命令的指令頭,要求存儲系統鎖定指定的存儲塊,即只 允許發出所述鎖定命令的處理器訪問所述存儲塊,其他處理器或設備不允許訪問所述存儲塊;BlockBase:指示所述要鎖定的存儲塊的首地址;BlockSize: 指示要鎖定的存儲塊的大小。為了提高存儲系統的硬件處理所述命令的效率, BlockBase和BlockSize —般要求為2的整數次冪的倍數。
更近一步的,為了提高存儲系統的硬件處理效率,可以將所述BlockSize 參數缺省,并將所述存儲塊的大小定義為固定大小,則所述存儲塊鎖定命令的 軟件命令,包括鎖定命令的指令頭和需要鎖定的所述存儲塊的首地址;該命令 可以具體抽象為如下形式LockMem BlockBase。其中,所述要鎖定的存儲塊 的首地址, 一般與所述存儲系統高速緩存的行對齊。
602、
系統后,所述處理器要在預設的時鐘周期內,判斷是否接收到所述存儲系統發 送的所述存儲塊鎖定完成信息,所述預設的時鐘周期為一經驗值,可以根據所 述存儲系統執行指令的時鐘周期設置;若在預設的時鐘周期內,所述處理器接 收到所述存儲系統發送的所述存儲塊鎖定完成信息,則執行步驟603;否則執行 步驟605。
603、 在一定的時鐘周期內,所述處理器接收到所述存儲系統返回的所述存 儲塊鎖定完成信息,表示所述處理器獲得了訪問所述存儲塊的權限,所以所述 處理器通過自身的調度器,調度所述硬件線程訪問所述存儲塊所包含的共享數 據。
604、 在所述處理器訪問所述存儲塊所包含的共享數據后,所述處理器向所 述存儲系統發送所述存儲塊解鎖命令,以指示所述存儲系統解除對所述存儲塊 的鎖定,以便使所述存儲塊被其他的處理器或設備訪問。
其中,所述處理器發送的存儲塊解鎖命令為一條軟件指令,包括解鎖命令 的指令頭和需要解除鎖定命令的所述存儲塊的首地址。具體可以抽象為如下形式UnlockMem BlockBase「
其中,UnlockMem為解鎖命令的指令頭,指示所述存儲系統將所述存儲塊 解鎖;BlockBase為需要解除鎖定命令的所述存儲塊的首地址。
605、在一定的時鐘周期內,所述處理器沒有接收到所述存儲塊已鎖定的命 令,表明所述處理器當前需要訪問的存儲塊已被除所述處理器以外的其他處理 器鎖定,使存儲系統暫時不能將所述存儲塊分配給所述處理器,使所述處理器 訪問所述存儲塊所包含的共享數據。所述存儲系統只能等待所述存儲塊釋放, 即所述存儲塊處于非鎖定狀態時,才能將所述存儲塊鎖定,才能使所述處理器 獲得訪問所述存儲塊的權限。為了不影響所述處理器的其他處理工作,在一定 的時鐘周期內,所述處理器沒有接收到所述存儲塊鎖定完成信息時,所述發送 存儲塊鎖定命令的硬件線程繼續等待所述存儲系統發送的所述存儲塊鎖定完成 信息,直到接收到所述鎖定完成信息。
本發明實施例4是供一種存儲系統共享數據的方法,如圖7所示,該方法包
括
701、 存儲系統接收處理器發送的存儲塊鎖定命令;所述存儲塊鎖定命令為 存儲系統。
702、 執行所述接收到的存儲塊鎖定命令,檢測所述接收到的存儲塊的狀態, 所述存儲塊的狀態包括鎖定狀態和非鎖定狀態;在所述存儲塊處于非鎖定狀 態時,所述存儲系統將所述存儲塊鎖定,并執行步驟703;其中,當所述存儲系 統將所述存儲塊鎖定后,其他的處理器訪問所述鎖定的存儲塊所包含的共享數
含的共享數據時為正常訪問,以此實現處理器排他性的獨占的訪問所述共享數據。
本步驟中,當所述存儲塊處于鎖定狀態時,所述存儲系統只有等到所述已 鎖定的存儲塊解鎖后,所述存儲系統才能將所述存儲塊分配給所述處理器并將 所述存儲塊鎖定完成消息發送給所述處理器,以指示所述處理器訪問所述存儲 塊所包含的共享數據。
703、 在所述存儲系統將所述存儲塊鎖定后,將所述存儲塊鎖定完成的信息 發送給所述處理器,以指示所述處理器訪問所述存儲塊所包含的共享數據。
704、 在所述處理器訪問所述共享數據結束后,所述處理器向所述存儲系統 發送所述存儲塊的解鎖命令,以便所述存儲系統解除所述存儲塊的鎖定,當所 述處理器的硬件線程向所述存儲系統發送所述存儲塊的解鎖命令時,所述存儲 系統接收所述處理器發送的解鎖命令。
705、 所述存儲系統根據所述解鎖命令將所述存儲塊的鎖定解除,以便其他 處理器和總線設備可以訪問所述存儲塊所包含的共享數據。
本發明實施例提供一種處理器,如圖3所示,該處理器包括發送單元31、 判斷單元32和執行單元33。
發送單元31用于通過所述處理器中的硬件線程向存儲系統發送存儲塊鎖定 命令,以指示所述存儲系統將所述存儲塊鎖定,所述存儲塊的鎖定命令為一條 軟件指令,包括鎖定命令的指令頭、需要鎖定的所述存儲塊的首地址和需要鎖 定的所迷存儲塊的大小;為了提高所迷存儲系統硬件處理所述命令的了效率, 將所述需要鎖定的所述存儲塊的大小設定為一固定值,并缺省該參數。
在所述發送單元31將所述存儲塊鎖定命令發送給存儲系統后,所述處理器 通過判斷單元32在預設的時鐘周期內,判斷是否接收到所述存儲系統發送的所 述存儲塊鎖定完成信息,所述預設的時鐘周期為一經驗值,可以根據所述存儲系統執行所述鎖定命令的時鐘周期設定。
若所述判斷單元32判定在一定的時鐘周期內,所述處理器接收到所述存儲
系統發送的所述存儲塊鎖定完成信息時,所述執行單元33調度所述硬件線程訪 問所述存儲塊所包含的共享數據;若所述判斷單元32判定在一定的時鐘周期內, 所述處理器沒有接收到所述存儲系統發送的所述存儲塊鎖定完成信息時,所述 執行單元33調度所述硬件線程繼續等待所述存儲系統發送的存儲塊鎖定完成信 息,并調用所述判斷單元32繼續檢測是否接收到所述存儲系統發送的所述存儲 塊鎖定完成信息,直到檢測到所述處理器接收到所述存儲系統發送的所述存儲 模塊鎖定完成信息,并調用所述執行單元33調度所述硬件線程訪問所述存儲塊 中的共享數據。
在所述處理器訪問完所述存儲塊所包含的共享數據后,所述發送單元31還 用于向所述存儲系統發送所述存儲塊解鎖命令,指示所述存儲系統將所述存儲 塊的鎖定解除,所述存儲塊的解鎖命令為一條軟件指令。
本發明實施例提供一種存儲系統,如圖4所示,該系統包括接收單元41、 4丸行單元42和發送單元43。
所述接收單元41用于接收處理器發送的存儲塊鎖定命令,所述存儲塊鎖定 命令為一條軟指令命令;在所述存儲系統接收到所述存儲塊鎖定命令后,通過 執行單元42執行所述接收到的存儲塊鎖定命令,檢測所述接收到的所述存儲塊 的狀態,所述存儲塊的狀態包括鎖定狀態和非鎖定狀態;在所述存儲系統檢測 到所述需要鎖定的存儲塊處于非鎖定狀態時,將所述存儲塊鎖定;在將所述存 儲塊鎖定后,所述存儲系統通過發送單元43將所述存儲塊鎖定完成信息發送給 所述處理器,以指示所述處理器訪問所述鎖定的存儲塊所包含的共享數據。
當所述處理器向所述存儲系統發送所述存儲塊解鎖命令時,所述接收單元41還用于接收所述處理器發送的所述存儲解鎖命令;在接收到所述解鎖命令后, 所述存儲系統通過所述執行單元42將所述存儲塊解鎖,以便其他處理器或者總 線設備可以訪問所述存儲塊所包含的共享數據。
本發明實施例提供一種處理器訪問共享數據的系統,如圖8所示,該系統 包括處理器系統81和存儲系統82,所述處理器系統81由至少一個處理器811 構成。
所述處理器811通過硬件線程向存儲系統82發送存儲塊鎖定命令,以指示 所述存儲系統將所述存儲塊鎖定;在將所述存儲塊鎖定命令發出后,所述處理 器811在預設的時鐘周期內,判斷是否接收到所述存儲系統發送的所述存儲塊 鎖定完成信息;若在預設的時鐘周期內,接收到所述存儲系統發送的存儲塊鎖 定完成信息,則調度所述硬件線程訪問所述存儲塊中的共享數據;若在預設的 時鐘周期內,所述處理器沒有接收到所述存儲系統發送的所述存儲塊鎖定完成 信息,則所述硬件線程繼續等待所述存儲系統發送的存儲塊鎖定完成信息。
當所述處理器811在一定的時間周期內,接收到所述存儲系統82發送的所 述存儲塊鎖定完成信息,并訪問所述存儲塊所包含的共享數據結束后,所述處 理器811還通過所述硬件線程向所述存儲系統發送所述存儲塊解鎖命令,指示 所述存儲系統82將所述存儲塊的鎖定解除。
當所述處理器811通過硬件線程向所述存儲系統發送所述存儲塊鎖定命令 后,所述存儲系統82用于接收所述處理器發送的存儲塊鎖定命令,并執行所述 存儲塊鎖定命令,若將所述存儲塊鎖定,則將所述存儲塊鎖定完成的信息發送 給所述處理器,以指示所述處理器訪問所述存儲塊所包含的數據。
當所述處理器811通過所述硬件線程,向所述存儲系統82發送所述存儲塊 的解鎖命令時,所述存儲系統82還用于接收所述處理器發送的解鎖命令,并執的共享數據。
本發明實施例中,在處理器訪問共享數據時,通過處理器的硬件線程向所 述存儲系統發送鎖定共享數據所在的存儲塊;并在接收到所述存儲系統返回的 所述存儲塊鎖定完成信息時,通過調度所述破件線程訪問所述鎖定的存儲塊所
包含的共享數據;使所述處理器獲得所述共享數據的訪問權限時,只需要等待
所述存儲系統發送的所述存儲塊鎖定完成信息即可,不需要不斷的向所述存儲 系統發送訪問所述共享數據的請求信息,使所述存儲系統不用處理過多的無效 訪問,提高了所述存儲系統效率。
并且當所述處理器在一定的時鐘周期內沒有接收到所述存儲系統發送的所 述存儲塊的鎖定完成信息時,所述處理器使發送所述存儲塊鎖定命令的硬件線 程繼續等待所述存儲系統發送的所述存儲塊的鎖定完成信息,而所述處理器將 本處理器的其他功能切換到所述處理器的其他線程上繼續進行,不會使所述處 理器在一定的時鐘周期內沒有申請到所述共享數據的訪問權時,空等獲得訪問 所述共享數據的權利,從而提高了整個系統的利用率。
進一步的,當所述存儲系統執行所述處理器發送的所述存儲塊的鎖定命令 時,當所述需要鎖定的存儲塊處于鎖定狀態時,所述存儲系統自動將所述處理 器訪問所述共享數據的請求掛起,在所述需要鎖定的存儲塊的狀態沒有由鎖定 狀態變為非鎖定狀態,所述存儲系統對所述請求不進行任何處理,在一定程度 上節約了所述存儲系統的時鐘周期,使所述存儲系統有更多的時鐘周期處理其 他的操作,從而提高了整個系統的利用率。
實施例3
本發明實施例提供一種處理器訪問共享數據的方法,如圖9所示,該方法包括
901、 處理器通過硬件線程向存儲系統發送存儲塊鎖定命令;所述存儲塊鎖 定命令為一條軟件指令。
902、 所述處理器將所述存儲塊的鎖定命令發送給所述存儲系統后,所述處 理器處于等待所述存儲塊的鎖定完成信息狀態。其中,所述等待的過程具體為 所述處理器在一定的時鐘周期內不斷的檢測是否接收到所述存儲系統發送的所 處存儲塊鎖定完成信息。
903、 所述存系統接收所述處理器發送的所述存儲塊鎖定命令,并執行所述 存儲塊的鎖定執行命令;所述存儲系統執行所述存儲塊鎖定命令時具體為所 述存儲系統檢測所述存儲塊的狀態,其中,所述存儲塊的狀態包括鎖定狀態和 非鎖定狀態,當所述要鎖定的存儲塊的狀態處于非鎖定狀態時,所述存儲系統 將所述存儲塊鎖定,并執行步驟904;若所述存儲塊的狀態處于鎖定狀態,則所 述處理器的鎖定請求被所述存儲系統掛起, 一直等到已鎖定的所述存儲塊解鎖, 所述處理器的鎖定請求才#皮執行。
904、 將所述存儲塊的鎖定完成信息發送給所述處理器,以指示所述處理器 獲得了訪問所述存儲塊中共享數據的權利,可以訪問所述存儲塊所包含的共享 數據。
905、 所述處理接收所述存儲系統發送的所述存儲塊鎖定完成信息后,所述 處理器通過自身的調度器調度所述硬件線程,訪問所述存儲塊所包含的共享數 據。
906、 在所述處理器訪問所述鎖定的存儲塊所包含的數據結束后,所述處理 器通過所述硬件線程,向所述存儲系統發送所述存儲塊解鎖命令,所述解鎖命 令為一條軟件指令。907、所述存儲系統接收所述處理器發送的所述存儲塊的解鎖命令,并執行
所述存儲塊的解鎖命令,以便其他的處理器或者總線設備訪問所述存儲塊所包 含的共享數據。
本發明實施例中,使所述處理器獲得所述共享數據的訪問權限時,只需要 等待所述存儲系統發送的所述存儲塊鎖定完成信息即可,不需要不斷的向所述 存儲系統發送訪問所述共享數據的請求信息,使所述存儲系統不用處理過多的
無效訪問,提高了所述存儲系統效率;并且當所述處理器在一定的時鐘周期內 沒有接收到所述存儲系統發送的所述存儲塊的鎖定完成信息時,所述處理器使 發送所述存儲塊鎖定命令的硬件線程繼續等待所述存儲系統發送的所述存儲塊 的鎖定完成信息,而所述處理器將本處理器的其他功能切換到所述處理器的其 他線程上繼續進行,不會使所述處理器在一定的時鐘周期內沒有申請到所述共 享數據的訪問權時,空等獲得訪問所述共享數據的權利,從而提高了整個系統 的利用率。
進一步的,當所述存儲系統4丸行所述處理器發送的所述存儲塊的鎖定命令 時,當所述需要鎖定的存儲塊處于鎖定狀態時,所述存儲系統自動將所述處理 器訪問所述共享數據的請求掛起,在所述需要鎖定的存儲塊的狀態沒有由鎖定 狀態變為非鎖定狀態,所述存儲系統對所述請求不進行任何處理,在一定程度 上節約了所述存儲系統的時鐘周期,使所述存儲系統有更多的時鐘周期處理其 他的操作,從而提高了整個系統的利用率。
通過以上的實施方式的描述,所屬領域的技術人員可以清楚地了解到本發 明可借助軟件加必需的通用硬件的方式來實現,當然也可以通過硬件,但很多 情況下前者是更佳的實施方式。基于這樣的理解,本發明的技術方案本質上或 者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在可讀取的存儲介質中,如計算機的軟盤,硬盤或光盤等,包括若 千指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備 等)執行本發明各個實施例所述的方法。
以上所述,僅為本發明的具體實施方式
,但本發明的保護范圍并不局限于 此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到 變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應 所述以權利要求的保護范圍為準。
權利要求
1、一種處理器訪問共享數據的方法,其特征在于,包括通過硬件線程向存儲系統發送存儲塊鎖定命令,以指示所述存儲系統將所述存儲塊鎖定;在預設的時鐘周期內,判斷是否接收到所述存儲系統發送的所述存儲塊鎖定完成信息;若在預設的時鐘周期內,接收到所述存儲系統發送的存儲塊鎖定完成信息,則調度所述硬件線程訪問所述存儲塊中的共享數據;若在預設的時鐘周期內,沒有接收到所述存儲系統發送的所述存儲塊鎖定完成信息,則所述硬件線程繼續等待所述存儲系統發送的所述存儲塊鎖定完成信息。
2、 根據權利要求1所述的處理器訪問共享數據的方法,其特征在于,在 調度所述硬件線程訪問所述存儲塊中的共享數據后,該方法還包括通過所述硬件線程向所述存儲系統發送所述存儲塊解鎖命令,以指示所述 存儲系統解除對所述存儲塊的鎖定。
3、 根據權利要求2所述的處理器訪問共享數據的方法,其特征在于,所述 存儲塊解鎖命令為一條軟件指令,包括解鎖命令的指令頭和需要解除鎖定命令 的所述存儲塊的首地址。
4、 根據權利要求1所述的處理器訪問共享數據的方法,其特征在于,所 述存儲塊鎖定命令是一條軟件指令,包括鎖定命令的指令頭、需要鎖定的所述 存儲塊的首地址和需要鎖定的所述存儲塊的大小。
5、 根據權利要求1所述的處理器訪問共享數據的方法,其特征在于,在需 要鎖定的存儲塊的大小固定時,所述存儲塊鎖定指令包括鎖定命令的指令頭和 需要鎖定的所述存儲塊的首地址。
6、 一種處理器,其特征在于,包括發送單元,用于通過硬件線程向存儲系統發送存儲塊鎖定命令,以指示所述存儲系統將所述存儲塊鎖定;判斷單元,用于在預設的時鐘周期內,判斷是否接收到所述存儲系統發送的所述存儲塊鎖定完成信息;執行單元,用于當在預設的時鐘周期內,所述判斷單元判定接收到所述存 儲系統發送的所述存儲塊鎖定完成信息時,調度所述硬件線程訪問所述存儲塊 中的共享數據;所述執行單元,還用于在預設的時鐘周期內,所述判斷單元判定沒有接收 到所述存儲系統發送的所述存儲塊鎖定完成信息時,所述硬件線程繼續等待所 述存儲系統發送的所述存儲塊鎖定完成信息。
7、 根據權利要求6所述的處理器,其特征在于,所述發送單元還用于,在 調度所述硬件線程訪問所述存儲塊中的共享數據后,通過所述硬件線程向所述 存儲系統發送所述存儲塊解鎖命令,以指示存儲系統解除對所述存儲塊的鎖定。
8、 一種處理器訪問共享數據的系統,包括處理器系統和存儲系統,其特征 在于,所述處理器系統包括至少一個處理器,所述處理器通過硬件線程向存儲系 統發送存儲塊鎖定命令,以指示所述存儲系統將所述存儲塊鎖定;在預設的時 鐘周期內,判斷是否接收到所述存儲系統發送的所述存儲塊鎖定完成信息;若 在預設的時鐘周期內,接收到所述存儲系統發送的所述存儲塊鎖定完成信息, 則調度所述硬件線程訪問所述存儲塊中的共享勒:據;若在預設的時鐘周期內, 沒有接收到所述存儲系統發送的所述存儲塊鎖定完成信息,則所述硬件線程繼 續等待所述存儲系統發送的存儲塊鎖定完成信息;所述存儲系統接收所述處理器發送的存儲塊鎖定命令,并將所述存儲塊鎖 定完成信息發送給所述處理器,以指示所述處理器訪問所述鎖定的存儲塊所包 含的共享數據。
全文摘要
本發明公開了一種處理器訪問共享數據的方法、裝置及系統,涉及計算機領域,解決了存儲系統效率較低的問題。該方法包括處理器通過硬件線程向存儲系統發送存儲塊鎖定命令,以指示所述存儲系統將所述存儲塊鎖定;在預設的時鐘周期內,判斷是否接收到所述存儲系統發送的所述存儲塊鎖定完成信息;若在預設的時鐘周期內,接收到所述存儲系統發送的所述存儲塊鎖定完成信息,則調度所述硬件線程訪問所述存儲塊中的共享數據;若在預設的時鐘周期內,沒有接收到所述存儲系統發送的所述存儲塊的鎖定完成信息,則所述硬件線程繼續等待所述存儲系統發送的存儲塊鎖定完成信息。本發明實施例主要用于多處理器系統下處理器訪問共享數據的過程中。
文檔編號G06F13/16GK101566977SQ20091014717
公開日2009年10月28日 申請日期2009年6月8日 優先權日2009年6月8日
發明者高秋明 申請人:華為技術有限公司