欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

線(xiàn)程局部存儲(chǔ)實(shí)現(xiàn)方法和裝置的制作方法

文檔序號(hào):6604478閱讀:171來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):線(xiàn)程局部存儲(chǔ)實(shí)現(xiàn)方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種線(xiàn)程局部存儲(chǔ)(Thread Local Storage,簡(jiǎn) 稱(chēng)TLS)實(shí)現(xiàn)方法和裝置。
背景技術(shù)
線(xiàn)程局部存儲(chǔ)是多線(xiàn)程執(zhí)行環(huán)境中,用于保存線(xiàn)程私有數(shù)據(jù)的存儲(chǔ)區(qū)域。多線(xiàn)程 技術(shù)是為了同步完成多個(gè)任務(wù),其中多個(gè)任務(wù)以更加靈活的方式來(lái)運(yùn)行,通過(guò)提高資源的 使用效率來(lái)提高系統(tǒng)的效率。如網(wǎng)絡(luò)編程中,當(dāng)監(jiān)聽(tīng)到外部連接請(qǐng)求時(shí),主線(xiàn)程會(huì)首先產(chǎn) 生一個(gè)新線(xiàn)程,由新線(xiàn)程來(lái)處理具體的數(shù)據(jù)收發(fā)和數(shù)據(jù)包的解析;而主線(xiàn)程自身則繼續(xù)監(jiān) 聽(tīng)數(shù)據(jù)的收發(fā)。如果我們使用單線(xiàn)程來(lái)實(shí)現(xiàn)數(shù)據(jù)的監(jiān)聽(tīng)和收發(fā),由于代碼的順序執(zhí)行,當(dāng)線(xiàn) 程在進(jìn)行數(shù)據(jù)收發(fā)時(shí)就不能處理外部連接請(qǐng)求。此時(shí)網(wǎng)卡緩沖區(qū)中填滿(mǎn)了數(shù)據(jù),但其沒(méi)有 得到處理器的響應(yīng),那么網(wǎng)卡無(wú)法繼續(xù)工作。顯然,用多線(xiàn)程來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求的監(jiān)聽(tīng)和數(shù)據(jù) 收發(fā),即使CPU在處理數(shù)據(jù)收發(fā),仍能被打斷并在響應(yīng)網(wǎng)絡(luò)請(qǐng)求后繼續(xù)處理數(shù)據(jù)收發(fā)。這樣 讓計(jì)算機(jī)系統(tǒng)中的多個(gè)部件在同一時(shí)刻都處于工作狀態(tài),以提高系統(tǒng)的效率。多個(gè)線(xiàn)程在執(zhí)行時(shí)往往需要保存線(xiàn)程私有數(shù)據(jù)。如線(xiàn)程在調(diào)用庫(kù)函數(shù),庫(kù)函數(shù)返 回時(shí)會(huì)對(duì)errno變量進(jìn)行設(shè)置,表示該調(diào)用是否成功。當(dāng)多個(gè)線(xiàn)程均會(huì)調(diào)用庫(kù)函數(shù)時(shí),需要 為每個(gè)線(xiàn)程提供一個(gè)私有的數(shù)據(jù)存儲(chǔ)區(qū)域,以保errno變量?jī)H僅代表本線(xiàn)程調(diào)用庫(kù)函數(shù)的 結(jié)果,而不是表示整個(gè)進(jìn)程中庫(kù)函數(shù)的調(diào)用結(jié)果。如果errno是全局變量,那么某個(gè)線(xiàn)程讀 取errno時(shí)很可能會(huì)獲取到其它線(xiàn)程調(diào)用庫(kù)函數(shù)的結(jié)果,導(dǎo)致程序執(zhí)行錯(cuò)誤。目前,許多系統(tǒng)通過(guò)在硬件上增加特殊的存儲(chǔ)結(jié)構(gòu)和特殊的指令來(lái)實(shí)現(xiàn)TLS。譬 如ARM中增加了 TLS寄存器,并加入了相應(yīng)的協(xié)處理器指令,可以直接對(duì)TLS寄存器進(jìn)行 訪(fǎng)問(wèn),即線(xiàn)程的私有數(shù)據(jù)都是存儲(chǔ)在TLS寄存器所指向的一片內(nèi)存中。X86體系結(jié)構(gòu)使用 LDT中的一個(gè)表項(xiàng)來(lái)存放線(xiàn)程的TLS。此外,在某些未加入特殊硬件支持的處理器中,還可以通過(guò)純軟件的方式來(lái)實(shí)現(xiàn) TLS0例如在每個(gè)線(xiàn)程創(chuàng)建之初,由庫(kù)函數(shù)通過(guò)操作系統(tǒng)提供的API為每個(gè)線(xiàn)程開(kāi)辟一段 固定的存儲(chǔ)空間,并由進(jìn)程統(tǒng)一維護(hù)這些地址空間。當(dāng)一個(gè)線(xiàn)程需要獲取TLS中存放數(shù)據(jù) 的時(shí),首先需要通過(guò)線(xiàn)程號(hào)索引線(xiàn)程私有存儲(chǔ)空間的基地址,然后再用偏移加基地址的方 式訪(fǎng)問(wèn)私有數(shù)據(jù)。

發(fā)明內(nèi)容
本發(fā)明提供了一種TLS實(shí)現(xiàn)方法和裝置,解決了 TLS實(shí)現(xiàn)過(guò)程中系統(tǒng)內(nèi)在訪(fǎng)問(wèn)壓 力大和工作效率低的問(wèn)題。一種TLS實(shí)現(xiàn)方法,包括從處理器的通用寄存器中,選擇至少一個(gè)通用寄存器作為T(mén)LS寄存器;通過(guò)專(zhuān)用操作命令管理所述TLS寄存器。進(jìn)一步的,所述專(zhuān)用操作命令包括寫(xiě)入命令(set_tls)和讀取命令(get_tls),所
3述寫(xiě)入命令用于向所述TLS寄存器寫(xiě)入數(shù)據(jù),所述讀取命令用于從所述TLS寄存器讀取數(shù) 據(jù)。進(jìn)一步的,所述通過(guò)專(zhuān)用操作命令管理所述TLS寄存器包括通過(guò)所述寫(xiě)入命令將當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)寫(xiě)入所述TLS寄存器;通過(guò)所述讀取命令從所述TLS寄存器中讀取當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)。進(jìn)一步的,上述TLS實(shí)現(xiàn)方法還包括在當(dāng)前線(xiàn)程換出或進(jìn)行異常處理時(shí),從所述TLS寄存器中讀取所述當(dāng)前線(xiàn)程的線(xiàn) 程私有數(shù)據(jù),將所述當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)存儲(chǔ)在該線(xiàn)程對(duì)應(yīng)的線(xiàn)程控制塊中。進(jìn)一步的,上述TLS實(shí)現(xiàn)方法還包括在線(xiàn)程恢復(fù)時(shí),讀取所述線(xiàn)程的線(xiàn)程控制塊中存儲(chǔ)的線(xiàn)程私有數(shù)據(jù),將所述線(xiàn)程 私有數(shù)據(jù)寫(xiě)入所述TLS寄存器中。本發(fā)明還提供了一種TLS實(shí)現(xiàn)裝置,包括寄存器指定模塊,用于從處理器的通用寄存器中,選擇至少一個(gè)通用寄存器作為 TLS寄存器;TLS管理模塊,用于通過(guò)專(zhuān)用操作命令管理所述TLS寄存器。進(jìn)一步的,所述專(zhuān)用操作命令包括寫(xiě)入命令和讀取命令,所述寫(xiě)入命令用于向所 述TLS寄存器寫(xiě)入數(shù)據(jù),所述讀取命令用于從所述TLS寄存器讀取數(shù)據(jù),所述TLS管理模塊 包括寫(xiě)入單元,用于通過(guò)所述寫(xiě)入命令將當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)寫(xiě)入所述TLS寄存 器;讀取單元,用于通過(guò)所述讀取命令從所述TLS寄存器中讀取當(dāng)前線(xiàn)程的線(xiàn)程私有 數(shù)據(jù)。進(jìn)一步的,上述TLS實(shí)現(xiàn)裝置還包括數(shù)據(jù)轉(zhuǎn)移模塊,用于在當(dāng)前線(xiàn)程換出或進(jìn)行異常處理時(shí),從所述TLS寄存器中讀 取所述當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù),將所述當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)存儲(chǔ)在該線(xiàn)程對(duì)應(yīng)的線(xiàn) 程控制塊中。進(jìn)一步的,所述數(shù)據(jù)轉(zhuǎn)移模塊,還用于在線(xiàn)程恢復(fù)時(shí),讀取所述線(xiàn)程的線(xiàn)程控制塊 中存儲(chǔ)的線(xiàn)程私有數(shù)據(jù),將所述線(xiàn)程私有數(shù)據(jù)寫(xiě)入所述TLS寄存器中。本發(fā)明提供的TLS實(shí)現(xiàn)方法和裝置,本發(fā)明的主要思想是選擇一個(gè)通用寄存器作 為T(mén)LS寄存器,通過(guò)專(zhuān)用操作命令管理所述TLS寄存器,不需要添加額外的硬件寄存器,也 不需要占用計(jì)算機(jī)系統(tǒng)內(nèi)存,解決了 TLS實(shí)現(xiàn)過(guò)程中系統(tǒng)內(nèi)在訪(fǎng)問(wèn)壓力大和工作效率低的 問(wèn)題。


圖1為本發(fā)明的實(shí)施例的應(yīng)用環(huán)境示意圖;圖2為本發(fā)明的實(shí)施例一提供的一種TLS實(shí)現(xiàn)方法的流程圖;圖3為本發(fā)明的實(shí)施例中寄存器使用情況示意圖;圖4為本發(fā)明的實(shí)施例二提供的一種TLS實(shí)現(xiàn)方法的流程圖;圖5為本發(fā)明的實(shí)施例提供的一種TLS實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖6為圖5中TLS管理模塊的結(jié)構(gòu)示意圖;圖7為本發(fā)明的又一實(shí)施例提供的一種TLS實(shí)現(xiàn)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式純軟件實(shí)現(xiàn)TLS的方式需要調(diào)用額外的庫(kù)函數(shù),并且需要額外地維護(hù)每個(gè)線(xiàn)程的 私有存儲(chǔ)區(qū)域;相比之下,具有硬件支持的處理器,可直接從寄存器中讀取TLS的基地址, 并通過(guò)偏移訪(fǎng)問(wèn)線(xiàn)程局部數(shù)據(jù)。所以,具有硬件支持的TLS機(jī)制,可以減少通過(guò)線(xiàn)程號(hào)索引 線(xiàn)程局部存儲(chǔ)空間的開(kāi)銷(xiāo),免除進(jìn)程對(duì)這些線(xiàn)程局部地址空間的維護(hù)。此外直接對(duì)寄存器 進(jìn)行訪(fǎng)問(wèn),也能夠一定程度上減少內(nèi)存的訪(fǎng)問(wèn)壓力。雖然具有特殊硬件支持的TLS機(jī)制,能夠減少TLS操作時(shí)的開(kāi)銷(xiāo),但是需要專(zhuān)有的 存儲(chǔ)結(jié)構(gòu)和特殊的操作指令,即需要修改體系結(jié)構(gòu)加入相應(yīng)的硬件邏輯。所以,一些較老的 體系結(jié)構(gòu),無(wú)法有效地直接使用硬件TLS機(jī)制保證多線(xiàn)程執(zhí)行環(huán)境的高效性。為了解決軟件實(shí)現(xiàn)TLS時(shí)內(nèi)存訪(fǎng)問(wèn)壓力大和硬件實(shí)現(xiàn)TLS時(shí)系統(tǒng)工作效率低的問(wèn) 題,本發(fā)明的實(shí)施例提供了一種TLS實(shí)現(xiàn)方法。下面結(jié)合附圖,對(duì)本發(fā)明的實(shí)施例提供的一種TLS實(shí)現(xiàn)方法進(jìn)行詳細(xì)介紹。圖1所示為本發(fā)明的實(shí)施例的應(yīng)用環(huán)境,包括編譯器101,TLS寄存器102,應(yīng)用程序103,操作系統(tǒng)104以及由set_tls和get_ tls組成的對(duì)TLS進(jìn)行操作的TLS庫(kù)函數(shù)105。其中,TLS寄存器為處理器的一個(gè)通用寄存器。操作系統(tǒng)104和處理器107共同 對(duì)上下文106進(jìn)行管理,如上下文切換等。應(yīng)用程序103工作在兩種不同類(lèi)型的系統(tǒng)接口上首先應(yīng)用程序103可以使用庫(kù) 函數(shù)105 (BP set_tls和get_tls),直接作用于處理器107并訪(fǎng)問(wèn)與TLS寄存器102 ;其次, 應(yīng)用程序103通過(guò)庫(kù)函數(shù)封裝的API,并利用操作系統(tǒng)內(nèi)核的上下文保存機(jī)制,將TLS的值 保存于線(xiàn)程控制塊中。本發(fā)明的實(shí)施例一提供了一種TLS實(shí)現(xiàn)方法,無(wú)需添加額外的硬件TLS寄存器,利 用現(xiàn)有的硬件資源,為計(jì)算機(jī)系統(tǒng)提供了靈活、高效的線(xiàn)程局部數(shù)據(jù)存儲(chǔ)機(jī)制。結(jié)合上述應(yīng)用環(huán)境,使用本發(fā)明實(shí)施例一提供的TLS實(shí)現(xiàn)方法在計(jì)算機(jī)系統(tǒng)中實(shí) 現(xiàn)TLS的流程如圖2所示,包括步驟201、從處理器的通用寄存器中,選擇至少一個(gè)通用寄存器作為T(mén)LS寄存器;本發(fā)明實(shí)施例中,處理器的通用寄存器具有多種用途,如圖3中的RO這一通用寄 存器即為傳參寄存器。即,當(dāng)函數(shù)的參數(shù)的個(gè)數(shù)為一個(gè)時(shí),該參數(shù)的值被放在RO中,函數(shù)內(nèi) 部可以直接讀取RO獲取參數(shù)。處理器的通用寄存器可以為來(lái)自于caller save的寄存器,也可以為來(lái)自于 callee save的寄存器。本步驟選擇的TLS寄存器為R16。被選作TLS寄存器的通用寄存器將不再接受函 數(shù)庫(kù)之外命令的操作。操作系統(tǒng)通過(guò)應(yīng)用程序,對(duì)TLS寄存器進(jìn)行操作。為保證TLS寄存器的專(zhuān)用性, 可對(duì)操作系統(tǒng)的編譯器進(jìn)行修改,在編譯器生成應(yīng)用程序時(shí),TLS寄存器對(duì)其他應(yīng)用不可見(jiàn) (編譯器在生成二進(jìn)制代碼時(shí),對(duì)于普通的函數(shù)而言,被選出作為T(mén)LS寄存器不參與寄存器的分配),只有TLS專(zhuān)用操作命令可以管理操作所述TLS寄存器。本發(fā)明實(shí)施例所選擇的TLS寄存器可能為一個(gè),也可以為多個(gè),如果只選擇一個(gè) TLS寄存器,則可在該TLS寄存器中存放指向私有數(shù)據(jù)內(nèi)存位置的指針;如果選擇多個(gè)TLS 寄存器,更可以將私有數(shù)據(jù)直接存儲(chǔ)于TLS寄存器中,進(jìn)一步提高訪(fǎng)問(wèn)效率。步驟202、通過(guò)專(zhuān)用操作命令管理所述TLS寄存器;本發(fā)明實(shí)施例中,專(zhuān)用操作命令具體指TLS庫(kù)函數(shù),包括寫(xiě)入命令(set_tls)和讀 取命令(get_tls)。set_tls,使用一條mov指令,將RO的內(nèi)容寫(xiě)入R16 ;同理,get_tls也 是使用一條mov指令,將R16的內(nèi)容寫(xiě)入R0。本發(fā)明實(shí)施例提供了 一種TLS實(shí)現(xiàn)方法,選擇一個(gè)通用寄存器作為T(mén)LS寄存器,通 過(guò)專(zhuān)用操作命令管理所述TLS寄存器,在編譯器生成應(yīng)用程序時(shí),應(yīng)用程序中除了 TLS庫(kù)函 數(shù)能夠顯式地操作TLS寄存器外,其余所有與TLS無(wú)關(guān)的函數(shù)均不會(huì)使用到TLS寄存器;應(yīng) 用程序中對(duì)TLS寄存器的操作均由庫(kù)中提供的兩個(gè)函數(shù)set_tls和get_tls來(lái)實(shí)現(xiàn),不需 要添加額外的硬件寄存器,也不需要占用計(jì)算機(jī)系統(tǒng)內(nèi)存,解決了 TLS實(shí)現(xiàn)過(guò)程中系統(tǒng)內(nèi) 在訪(fǎng)問(wèn)壓力大和工作效率低的問(wèn)題。下面結(jié)合附圖,對(duì)本發(fā)明的實(shí)施例二進(jìn)行說(shuō)明。在上下文切換或進(jìn)行異常處理時(shí),都需要對(duì)TLS寄存器進(jìn)行操作,使用本發(fā)明實(shí) 施例提供的TLS實(shí)現(xiàn)方法完成上下文切換過(guò)程中線(xiàn)程私有數(shù)據(jù)處理的過(guò)程如圖4所示,包 括步驟401、在當(dāng)前線(xiàn)程換出或進(jìn)行異常處理時(shí),從所述TLS寄存器中讀取所述當(dāng) 前線(xiàn)程的線(xiàn)程私有數(shù)據(jù),將所述當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)存儲(chǔ)在該線(xiàn)程對(duì)應(yīng)的線(xiàn)程控制塊 中。在線(xiàn)程換出時(shí)或進(jìn)行異常處理時(shí),由于TLS寄存器(R16)也屬于通用寄存器的范 疇,操作系統(tǒng)可以使用store指令,依次將所有R16中的全部數(shù)據(jù)寫(xiě)入當(dāng)前線(xiàn)程的線(xiàn)程控制 塊中。本步驟中,還需要對(duì)相應(yīng)的上下文進(jìn)行保存。步驟402、在線(xiàn)程恢復(fù)時(shí),讀取所述線(xiàn)程的線(xiàn)程控制塊中存儲(chǔ)的線(xiàn)程私有數(shù)據(jù),將 所述線(xiàn)程私有數(shù)據(jù)寫(xiě)入所述TLS寄存器中。在線(xiàn)程恢復(fù)換入時(shí),操作系統(tǒng)依次將該線(xiàn)程的線(xiàn)程控制塊中保存的私有線(xiàn)程數(shù) 據(jù),使用load指令依次寫(xiě)回到TLS寄存器中。本步驟中,還需要恢復(fù)相應(yīng)的上下文。本發(fā)明的實(shí)施例提供了一種TLS實(shí)現(xiàn)方法,首先由編譯器生成應(yīng)用程序,應(yīng)用程 序中除了庫(kù)函數(shù)能夠顯示地操作TLS寄存器外,其余所有與TLS無(wú)關(guān)的函數(shù)均不會(huì)使用到 TLS寄存器;應(yīng)用程序中對(duì)TLS寄存器的操作均由庫(kù)中提供的兩個(gè)函數(shù)set_tls和get_tls 來(lái)實(shí)現(xiàn);在上下文切換時(shí)保存并恢復(fù)TLS寄存器的內(nèi)容,確保當(dāng)前正在執(zhí)行的線(xiàn)程的線(xiàn)程 私有數(shù)據(jù)一定存放在TLS寄存器中。其中對(duì)線(xiàn)程私有數(shù)據(jù)的保存和恢復(fù)操作,都附屬與線(xiàn) 程上下文的保存和恢復(fù)。所述編譯器在基于通用寄存器的輕量級(jí)TLS機(jī)制中,負(fù)責(zé)以下功能控制TLS寄存 器的使用。編譯器編譯并鏈接所有高級(jí)語(yǔ)言的代碼,并在匯編時(shí)保證TLS寄存器不參與寄 存器的分配。即將某個(gè)通用寄存器的功能加以限定,其他非TLS相關(guān)的指令中的源操作數(shù)和目的操作數(shù),都不會(huì)使用與TLS綁定的寄存器。在應(yīng)用被實(shí)例化為線(xiàn)程時(shí),TLS寄存器必須被賦予初值,可以與創(chuàng)建線(xiàn)程私有線(xiàn)程 數(shù)據(jù)一致,也可以在進(jìn)程創(chuàng)建時(shí)由編程人員手動(dòng)指定。兩種方式均是直接對(duì)線(xiàn)程控制塊進(jìn) 行操作,當(dāng)某個(gè)線(xiàn)程被調(diào)度執(zhí)行時(shí),以線(xiàn)程控制塊中的信息初始化TLS寄存器。本發(fā)明的實(shí)施例提供的TLS實(shí)現(xiàn)方法,引入了基于通用寄存器的輕量級(jí)TLS機(jī)制, 可以高效、靈活地支持多線(xiàn)程的執(zhí)行環(huán)境,特別是對(duì)于某些未能在硬件上對(duì)TLS直接提供 支持的處理器,減少了不必要的索引,避免軟件TLS的維護(hù)開(kāi)銷(xiāo)。本發(fā)明的實(shí)施例還提供了一種TLS實(shí)現(xiàn)裝置,其結(jié)構(gòu)如圖5所示,包括寄存器指定模塊501,用于從處理器的通用寄存器中,選擇至少一個(gè)通用寄存器作 為T(mén)LS寄存器;TLS管理模塊502,用于通過(guò)專(zhuān)用操作命令管理所述TLS寄存器。進(jìn)一步的,所述專(zhuān)用操作命令包括寫(xiě)入命令和讀取命令,所述寫(xiě)入命令用于向所 述TLS寄存器寫(xiě)入數(shù)據(jù),所述讀取命令用于從所述TLS寄存器讀取數(shù)據(jù),所述TLS管理模塊 502的結(jié)構(gòu)如圖6所示,包括寫(xiě)入單元601,用于通過(guò)所述寫(xiě)入命令將當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)寫(xiě)入所述TLS 寄存器;讀取單元602,用于通過(guò)所述讀取命令從所述TLS寄存器中讀取當(dāng)前線(xiàn)程的線(xiàn)程 私有數(shù)據(jù)。進(jìn)一步的,該裝置如圖7還包括數(shù)據(jù)轉(zhuǎn)移模塊503,用于在當(dāng)前線(xiàn)程換出或進(jìn)行異常處理時(shí),從所述TLS寄存器中 讀取所述當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù),將所述當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)存儲(chǔ)在該線(xiàn)程對(duì)應(yīng)的 線(xiàn)程控制塊中。進(jìn)一步的,所述數(shù)據(jù)轉(zhuǎn)移模塊503,還用于在線(xiàn)程恢復(fù)時(shí),讀取所述線(xiàn)程的線(xiàn)程控 制塊中存儲(chǔ)的線(xiàn)程私有數(shù)據(jù),將所述線(xiàn)程私有數(shù)據(jù)寫(xiě)入所述TLS寄存器中。上述TLS實(shí)現(xiàn)裝置,可集成于計(jì)算機(jī)的操作系統(tǒng)中,由處理器控制該TLS實(shí)現(xiàn)裝置 的開(kāi)啟和關(guān)閉,以在適當(dāng)?shù)臅r(shí)候啟動(dòng)使用通用寄存器實(shí)現(xiàn)TLS的機(jī)制。與本發(fā)明的實(shí)施例 提供的一種TLS實(shí)現(xiàn)方法相結(jié)合,從處理器的至少一個(gè)通用寄存器中,選擇一個(gè)通用寄存 器作為T(mén)LS寄存器,通過(guò)專(zhuān)用操作命令管理所述TLS寄存器,不需要添加額外的硬件寄存 器,也不需要占用計(jì)算機(jī)系統(tǒng)內(nèi)存,解決了 TLS實(shí)現(xiàn)過(guò)程中系統(tǒng)內(nèi)在訪(fǎng)問(wèn)壓力大和工作效 率低的問(wèn)題。本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的全部或部分步驟可以使用計(jì)算機(jī)程 序流程來(lái)實(shí)現(xiàn),所述計(jì)算機(jī)程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,所述計(jì)算機(jī)程序在 相應(yīng)的硬件平臺(tái)上(如系統(tǒng)、設(shè)備、裝置、器件等)執(zhí)行,在執(zhí)行時(shí),包括方法實(shí)施例的步驟 之一或其組合??蛇x地,上述實(shí)施例的全部或部分步驟也可以使用集成電路來(lái)實(shí)現(xiàn),這些步驟可 以被分別制作成一個(gè)個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電 路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。上述實(shí)施例中的各裝置/功能模塊/功能單元可以采用通用的計(jì)算裝置來(lái)實(shí)現(xiàn), 它們可以集中在單個(gè)的計(jì)算裝置上,也可以分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上。
上述實(shí)施例中的各裝置/功能模塊/功能單元以軟件功能模塊的形式實(shí)現(xiàn)并作為 獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述提到的計(jì)算機(jī) 可讀取存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤(pán)或光盤(pán)等。
權(quán)利要求
一種線(xiàn)程局部存儲(chǔ)實(shí)現(xiàn)方法,其特征在于,包括從處理器的通用寄存器中,選擇至少一個(gè)通用寄存器作為線(xiàn)程局部存儲(chǔ)(TLS)寄存器;通過(guò)專(zhuān)用操作命令管理所述TLS寄存器。
2.根據(jù)權(quán)利要求1所述的TLS實(shí)現(xiàn)方法,其特征在于,所述專(zhuān)用操作命令包括寫(xiě)入命 令(set_tls)和讀取命令(get_tls),所述寫(xiě)入命令用于向所述TLS寄存器寫(xiě)入數(shù)據(jù),所述 讀取命令用于從所述TLS寄存器讀取數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的TLS實(shí)現(xiàn)方法,其特征在于,所述通過(guò)專(zhuān)用操作命令管理所述 TLS寄存器包括通過(guò)所述寫(xiě)入命令將當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)寫(xiě)入所述TLS寄存器; 通過(guò)所述讀取命令從所述TLS寄存器中讀取當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的TLS實(shí)現(xiàn)方法,其特征在于,該方法還包括在當(dāng)前線(xiàn)程換出或進(jìn)行異常處理時(shí),從所述TLS寄存器中讀取所述當(dāng)前線(xiàn)程的線(xiàn)程私 有數(shù)據(jù),將所述當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)存儲(chǔ)在該線(xiàn)程對(duì)應(yīng)的線(xiàn)程控制塊中。
5.根據(jù)權(quán)利根據(jù)4所述的TLS實(shí)現(xiàn)方法,其特征在于,該方法還包括在線(xiàn)程恢復(fù)時(shí),讀取所述線(xiàn)程的線(xiàn)程控制塊中存儲(chǔ)的線(xiàn)程私有數(shù)據(jù),將所述線(xiàn)程私有 數(shù)據(jù)寫(xiě)入所述TLS寄存器中。
6.一種TLS實(shí)現(xiàn)裝置,其特征在于,包括寄存器指定模塊,用于從處理器的通用寄存器中,選擇至少一個(gè)通用寄存器作為T(mén)LS 寄存器;TLS管理模塊,用于通過(guò)專(zhuān)用操作命令管理所述TLS寄存器。
7.根據(jù)權(quán)利要求6所述的TLS實(shí)現(xiàn)裝置,其特征在于,所述專(zhuān)用操作命令包括寫(xiě)入命令 和讀取命令,所述寫(xiě)入命令用于向所述TLS寄存器寫(xiě)入數(shù)據(jù),所述讀取命令用于從所述TLS 寄存器讀取數(shù)據(jù),所述TLS管理模塊包括寫(xiě)入單元,用于通過(guò)所述寫(xiě)入命令將當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)寫(xiě)入所述TLS寄存器; 讀取單元,用于通過(guò)所述讀取命令從所述TLS寄存器中讀取當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)。
8.根據(jù)權(quán)利要求6所述的TLS實(shí)現(xiàn)裝置,其特征在于,該裝置還包括數(shù)據(jù)轉(zhuǎn)移模塊,用于在當(dāng)前線(xiàn)程換出或進(jìn)行異常處理時(shí),從所述TLS寄存器中讀取所 述當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù),將所述當(dāng)前線(xiàn)程的線(xiàn)程私有數(shù)據(jù)存儲(chǔ)在該線(xiàn)程對(duì)應(yīng)的線(xiàn)程控 制塊中。
9.根據(jù)權(quán)利要求6所述的TLS實(shí)現(xiàn)裝置,其特征在于,所述數(shù)據(jù)轉(zhuǎn)移模塊,還用于在線(xiàn)程恢復(fù)時(shí),讀取所述線(xiàn)程的線(xiàn)程控制塊中存儲(chǔ)的線(xiàn)程 私有數(shù)據(jù),將所述線(xiàn)程私有數(shù)據(jù)寫(xiě)入所述TLS寄存器中。
全文摘要
本發(fā)明提供了一種線(xiàn)程局部存儲(chǔ)實(shí)現(xiàn)方法和裝置。涉及計(jì)算機(jī)領(lǐng)域;解決了TLS實(shí)現(xiàn)過(guò)程中系統(tǒng)內(nèi)在訪(fǎng)問(wèn)壓力大和工作效率低的問(wèn)題。該方法包括從處理器的通用寄存器中,選擇至少一個(gè)通用寄存器作為T(mén)LS寄存器;通過(guò)專(zhuān)用操作命令管理所述TLS寄存器。本發(fā)明提供的技術(shù)方案,適用于多線(xiàn)程執(zhí)行環(huán)境。
文檔編號(hào)G06F9/46GK101882091SQ20101020580
公開(kāi)日2010年11月10日 申請(qǐng)日期2010年6月22日 優(yōu)先權(quán)日2010年6月22日
發(fā)明者吳棟霞, 程旭, 管雪濤, 鐘祺, 高海斌 申請(qǐng)人:北京北大眾志微系統(tǒng)科技有限責(zé)任公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
巴彦淖尔市| 洪雅县| 大新县| 河西区| 遂平县| 合作市| 建阳市| 姚安县| 石林| 体育| 文安县| 乐东| 丁青县| 定日县| 马鞍山市| 淮阳县| 仙游县| 延长县| 略阳县| 清涧县| 宣威市| 左云县| 东港市| 兰西县| 鹤山市| 万州区| 沈阳市| 红桥区| 浦县| 嘉祥县| 怀柔区| 正宁县| 新蔡县| 湘乡市| 越西县| 通渭县| 博罗县| 鱼台县| 凤翔县| 五大连池市| 巨鹿县|