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

控制線程在多線程處理器中的執(zhí)行的制作方法

文檔序號:11450208閱讀:279來源:國知局
控制線程在多線程處理器中的執(zhí)行的制造方法與工藝



背景技術(shù):

一個或多個方面一般地涉及多線程處理器,且具體地說,涉及控制線程在此類處理器中的執(zhí)行。

處理器可包括具有同步執(zhí)行的指令的多個硬件線程。此類處理器被稱為實施同步多線程(smt),所述同步多線程是用于通過允許多個獨立執(zhí)行線程更好地利用由現(xiàn)代處理器架構(gòu)提供的資源來改進處理器的總體效率的技術(shù)。

通過控制多線程處理器的線程的執(zhí)行,可獲得進一步的效率。



技術(shù)實現(xiàn)要素:

經(jīng)由提供如在權(quán)利要求1中要求保護的方法及相應(yīng)的系統(tǒng)和計算機程序產(chǎn)品,克服了現(xiàn)有技術(shù)的缺點且提供了優(yōu)點。

實現(xiàn)了額外特征及優(yōu)勢。本文詳細描述其他實施例及方面且將它們視為所要求保護的本發(fā)明的一部分。

附圖說明

在本說明書的結(jié)尾部分處的權(quán)利要求書中特別地指出且清楚地要求保護作為實例的一個或多個方面。前述內(nèi)容及其他目標(biāo)、特征及優(yōu)勢將自結(jié)合隨附圖進行的以下詳細描述而顯而易見,其中:

圖1示出結(jié)合并使用控制線程的執(zhí)行的一個或多個方面的計算環(huán)境的一個實例;

圖2示出結(jié)合并使用控制線程的執(zhí)行的一個或多個方面的計算環(huán)境的另一實例;

圖3a示出結(jié)合并使用控制線程的執(zhí)行的一個或多個方面的計算環(huán)境的又一實例;

圖3b示出圖3a的計算環(huán)境的存儲器的其他細節(jié);

圖3c示出結(jié)合并使用控制線程的執(zhí)行的一個或多個方面的計算環(huán)境的另一實例;

圖4a示出根據(jù)控制線程的執(zhí)行的一個方面使用的控制寄存器的一個實例;

圖4b示出根據(jù)控制線程的執(zhí)行的一個方面使用的指令地址寄存器的一個實例;

圖5示出管線的各級的一個實例;

圖6示出控制線程在多線程處理器中的執(zhí)行的邏輯的一個實例;

圖7a示出“清空”指令(draininstruction)的格式的一個實例;

圖7b示出與圖7a的“清空”指令相關(guān)聯(lián)的邏輯的一個實施例;

圖8a示出“比較并交換r單元寄存器(compareandswapr-unitregister)”指令的格式的一個實例;

圖8b示出與圖8a的“比較并交換r單元寄存器”指令相關(guān)聯(lián)的邏輯的一個實施例;

圖9a示出“加載且或r單元寄存器(loadandorr-unitregister)”指令的格式的一個實例;

圖9b示出與圖9a的“加載且或r單元寄存器”指令相關(guān)聯(lián)的邏輯的一個實施例;

圖10a示出“加載且與r單元寄存器(loadandandr-unitregister)”指令的格式的一個實例;

圖10b示出與圖10a的“加載且與r單元寄存器”指令相關(guān)聯(lián)的邏輯的一個實施例;

圖11a至11b示出與由一個或多個指令使用的互鎖相關(guān)聯(lián)的邏輯的一個實例;及

圖12示出計算機程序產(chǎn)品的一個實施例。

具體實施方式

根據(jù)一個或多個方面,提供用于控制在計算環(huán)境內(nèi)操作的核心(例如,物理硬件處理器,在本文中亦被稱作處理器或處理器核心)中的線程(例如,硬件線程)的執(zhí)行的能力。所述核心支持(例如)多線程(諸如同步多線程(smt)),此意謂可有效地存在在同一物理處理器硬件上同步操作的多個邏輯中央處理單元(cpu)。將這些邏輯cpu中的每一者視為一個線程。

在此類多線程環(huán)境中,可能需要一個線程來阻止所述處理器核心上的其他線程執(zhí)行。此情形可以是響應(yīng)于運行一關(guān)鍵序列或另一序列,所述關(guān)鍵序列或另一序列需要處理器核心資源或正在以其他線程可能干擾其執(zhí)行的方式操縱處理器核心資源。在一個實例中,作為此能力的一部分,可能需要等待直至處理器核心上的所有線程已滿足某一條件。舉例而言,假定在特定硬件線程上運行的軟件或固件意欲執(zhí)行系統(tǒng)動作,首先需要自整個處理器核心無進行中的存儲,亦即,在處理器核心上的所有線程上無存儲在進行中。為了判定其他線程是否被停止,根據(jù)一個方面提供在本文中被稱作清空指令的指令,該指令監(jiān)視在處理器核心上的線程的狀態(tài)。

另外,根據(jù)一個或多個方面,在控制線程的執(zhí)行時,可使用各種原子指令(atominstruction)。這些指令在可由smt處理器的線程存取且由smt處理器的線程共享的寄存器上操作,而非在存儲裝置或存儲器上操作。(除非另外隱含地或顯式地說明,否則存儲器及存儲裝置在本文中可互換使用。)這允許多個線程使用共享寄存器而非存儲裝置來傳達及共享信息。如本文所描述,這些指令(在本文中被稱作“比較并交換r單元寄存器”或“比較并交換寄存器”指令、“加載且或r單元寄存器”或“加載且或寄存器”指令及“加載且與r單元寄存器”或“加載且與寄存器”指令)使用互鎖控制對共享寄存器的存取。

參考圖1描述結(jié)合并使用控制線程的執(zhí)行的一個或多個方面的計算環(huán)境的一個實例。參考圖1,在一個實例中,計算環(huán)境100基于z/architecture,所述z/architecture由紐約阿蒙克市的國際商業(yè)機器公司提供。z/architecture描述于題為“z/architecture-principlesofoperation”的出版號第sa22-7832-09號的ibm出版物(2012年9月,第10版)中,所述出版物在此以其全文引用的方式并入本文中。

z/architecture、ibm及z/vm、z/os、power及powerpc(本文中所參考)為紐約阿蒙克市的國際商業(yè)機器公司的注冊商標(biāo)。本文中使用的其他名稱可為國際商業(yè)機器公司或其他公司的注冊商標(biāo)、商標(biāo)或產(chǎn)品名稱。

作為一個實例,計算環(huán)境100包括中央處理器復(fù)合體(cpu)102,所述復(fù)合體經(jīng)由一個或多個控制單元108耦接至一個或多個輸入/輸出(i/o)設(shè)備106。中央處理器復(fù)合體102包括(例如)耦接至一個或多個處理器核心110的處理器存儲器104(亦稱為,主存儲器、主存儲裝置、中央存儲裝置)以及輸入/輸出子系統(tǒng)111,其中每一者在下文中描述。

處理器存儲器104包括(例如)一個或多個分區(qū)112(例如,邏輯分區(qū))及包括(例如)邏輯分區(qū)系統(tǒng)管理程序114及其他處理器固件115的處理器固件113。邏輯分區(qū)系統(tǒng)管理程序114的一個實例為紐約阿蒙克市的國際商業(yè)機器公司提供的processorresource/systemmanager(pr/sm)。

邏輯分區(qū)充當(dāng)單獨系統(tǒng)且具有一個或多個應(yīng)用120及視情況在其中具有駐留操作系統(tǒng)122,駐留操作系統(tǒng)122對于每一邏輯分區(qū)可為不同的。在一個實施例中,所述操作系統(tǒng)為紐約阿蒙克市的國際商業(yè)機器公司提供的z/os操作系統(tǒng)、z/vm操作系統(tǒng)、z/linux操作系統(tǒng)或tpf操作系統(tǒng)。

邏輯分區(qū)112由邏輯分區(qū)系統(tǒng)管理程序114管理,所述邏輯分區(qū)系統(tǒng)管理程序由在核心110上運行的固件實施。如本文中所使用,固件包括(例如)處理器核心的微碼和/或毫碼(millicode)。固件包括(例如)用于實施較高級機器碼的硬件級指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個實施例中,固件包括(例如)專有碼,所述專有碼通常作為包括受信任軟件的微碼或特定于基礎(chǔ)硬件的微碼被遞送,且控制對系統(tǒng)硬件的操作系統(tǒng)存取。

處理器核心110為分配給邏輯分區(qū)的物理處理器資源。具體地說,每一邏輯分區(qū)112具有一個或多個邏輯處理器,所述邏輯處理器中的每一者表示分配給該分區(qū)的所有或一部分核心110。特定分區(qū)112的邏輯處理器可專用于該分區(qū),以便為該分區(qū)保留基礎(chǔ)核心資源110,或所述邏輯處理器可與另一分區(qū)共享,以使得基礎(chǔ)處理器資源對于另一分區(qū)為潛在可用的。

在一個實例中,核心中的至少一者為包括多個線程(亦即,同步操作的多個邏輯cpu)的多線程處理器(諸如同步多線程處理器)。在一個實例中,核心包括兩個線程,但在其他實施例中,可存在兩個以上的線程。兩個線程(在本文中被稱作t0(126)及t1(128))僅為一個實例。

為了支持同步多線程,處理器核心硬件含有每一線程的完整架構(gòu)狀態(tài)(例如,z/architecture及微-架構(gòu)狀態(tài))。因此,提供對于所有線程為公用的處理器范圍的寄存器130(在本文中被稱作公用寄存器)及對于線程為唯一的線程特定寄存器132(在本文中被稱作唯一寄存器)。在下文進一步描述這些寄存器的使用。

為了控制多個線程的執(zhí)行,核心110包括硬件和/或邏輯以提供如本文所描述的此類控制。為方便起見,此硬件和/或邏輯在本文中被稱作線程控制工具134。

輸入/輸出子系統(tǒng)111引導(dǎo)輸入/輸出設(shè)備106與主存儲裝置104之間的信息流。所述子系統(tǒng)耦接至中央處理復(fù)合體,因為其可為中央處理復(fù)合體的一部分或與中央處理復(fù)合體分離。i/o子系統(tǒng)減輕處理器核心的與輸入/輸出設(shè)備直接通信的任務(wù)且準(zhǔn)許數(shù)據(jù)處理與輸入/輸出處理同時進行。為提供通信,i/o子系統(tǒng)采用i/o通信適配器。存在各種類型的通信適配器,包括(例如)通道、i/o適配器、pci卡、以太網(wǎng)卡、小型計算機存儲接口(scsi)卡等。在本文所描述的特定實例中,i/o通信適配器為通道,且因此,i/o子系統(tǒng)在本文中被稱作通道子系統(tǒng)。然而,此情形僅為一個實例??墒褂闷渌愋偷膇/o子系統(tǒng)。

i/o子系統(tǒng)在管理至輸入/輸出設(shè)備106或來自輸入/輸出設(shè)備106的信息流時使用一個或多個輸入/輸出路徑作為通信鏈路。在此特定實例中,這些路徑被稱為通道路徑,這是由于通信適配器為通道。

參考圖2描述結(jié)合并使用控制線程的執(zhí)行的一個或多個方面的計算環(huán)境的另一實例。在此實例中,計算環(huán)境200包括基于z/architecture(或另一實施例中的另一架構(gòu))實施的未分區(qū)的環(huán)境。所述計算環(huán)境包括核心202,核心202包括(例如)一個或多個高速緩存204、至少兩個線程t0(206)、t1(208)、用于線程的一組公用寄存器210、用于每一線程的一組唯一寄存器212、以及線程控制工具214。

核心202在通信上耦接至具有一個或多個高速緩存218及至少一個控制公用程序220(諸如操作系統(tǒng))的存儲器216;及耦接至輸入/輸出(i/o)子系統(tǒng)222。i/o子系統(tǒng)222在通信上耦接至外部i/o設(shè)備224,所述外部i/o設(shè)備可包括(例如)數(shù)據(jù)輸入設(shè)備、傳感器和/或諸如顯示器的輸出設(shè)備。

參考圖3a描述結(jié)合并使用控制線程的執(zhí)行的一個或多個方面的計算環(huán)境的另一實施例。在此實例中,計算環(huán)境300a包括(例如)經(jīng)由(例如)一個或多個總線308和/或其他連接彼此耦接的本機核心302、存儲器304及一個或多個輸入/輸出設(shè)備和/或接口306。作為實例,計算環(huán)境300a可包括:由紐約阿蒙克市的國際商業(yè)機器公司提供的powerpc處理器或powersystems服務(wù)器;由加州帕洛阿爾托的惠普公司(hewlettpackardco.,paloalto,california)提供的具有intelitaniumii處理器的hpsuperdome;和/或基于由國際商業(yè)機器公司、惠普公司、英特爾公司、甲骨文公司(oracle)或其他公司提供的架構(gòu)的其他機器。

本機核心302包括一個或多個本機寄存器310,諸如在環(huán)境內(nèi)處理期間使用的一個或多個通用寄存器和/或一個或多個專用寄存器,所述寄存器包括表示在任何特定時間點的環(huán)境的狀態(tài)的信息。另外,本機核心可包括(例如)至少兩個線程t0(311)、t1(313);用于線程的一組公用寄存器315;用于每一線程的一組線程特定寄存器317;及線程控制工具319。

此外,本機核心302執(zhí)行存儲在存儲器304中的指令及代碼。在一個特定實例中,處理器核心執(zhí)行存儲在存儲器304中的仿真器代碼312。此代碼使得在一個架構(gòu)中配置的計算環(huán)境能夠仿真一個或多個其他架構(gòu)。舉例而言,仿真器代碼312允許基于除z/architecture以外的架構(gòu)的機器(諸如,powerpc處理器、powersystems服務(wù)器、hpsuperdome服務(wù)器或其他者)仿真z/architecture及執(zhí)行基于z/architecture開發(fā)的軟件及指令。

在另一實施例中,如圖3c所展示,核心302為單線程核心,但多線程核心被仿真且被包括在仿真器代碼312內(nèi)。舉例而言,仿真器代碼312包括仿真線程控制工具320;仿真線程322、324;仿真公用寄存器326及仿真唯一寄存器328,其中每一者基于與本機核心302的架構(gòu)(諸如z/architecture)不同的架構(gòu)。

參考圖3b描述與仿真器代碼312有關(guān)的其他細節(jié)。存儲于存儲器304中的客機指令350包括被開發(fā)以在除本機核心302的架構(gòu)以外的架構(gòu)中執(zhí)行的軟件指令(例如,與機器指令相關(guān))。舉例而言,客機指令350可被設(shè)計以在z/architecture核心202上執(zhí)行,但改為在本機核心302上被仿真,所述本機核心302可為(例如)intelitaniumii處理器。在一個實例中,仿真器代碼312包括指令取回例程352以自存儲器304獲得一個或多個客機指令350,及視情況提供用于所獲得的指令的本地緩沖。所述仿真器代碼亦包括指令轉(zhuǎn)譯例程354以判定已獲得的客機指令的類型且將所述客機指令轉(zhuǎn)譯成一個或多個對應(yīng)的本機指令356。此轉(zhuǎn)譯包括(例如)識別待由客機指令執(zhí)行的功能及選擇本機指令以執(zhí)行該功能。

此外,仿真器代碼312包括仿真控制例程360以引起執(zhí)行本機指令。仿真控制例程360可使得本機核心302執(zhí)行仿真一個或多個先前所獲得的客機指令的本機指令的例程,并且在此執(zhí)行完成時,使控制返回至指令取回例程以仿真下一客機指令或一組客機指令的獲得??蜋C指令可為本文所述的線程控制工具的指令。本機指令356的執(zhí)行可包括將數(shù)據(jù)自存儲器304加載至寄存器;將數(shù)據(jù)自寄存器存儲回至存儲器;或執(zhí)行某一類型的算術(shù)或邏輯運算(如由轉(zhuǎn)譯例程所確定)。

每一例程(例如)在軟件中實施,所述軟件存儲在存儲器中且由本機核心302執(zhí)行。在其他實例中,所述例程或操作中的一或多者在固件、硬件、軟件或它們的某一組合中實施。所仿真處理器的寄存器可使用本機核心的寄存器310或藉由使用存儲器304中的位置來仿真。在實施例中,客機指令350、本機指令356及仿真器代碼312可駐留于同一存儲器中或可分散于不同存儲設(shè)備中。

上文所描述的計算環(huán)境僅為可使用的計算環(huán)境的實例。可使用其他環(huán)境,包括但不限于其他未分區(qū)的環(huán)境、其他分區(qū)的環(huán)境和/或其他仿真環(huán)境;實施例不限于任何一種環(huán)境。

如上所指出,多個寄存器與每一線程相關(guān)聯(lián)。對于線程為公用的一個共享寄存器為控制寄存器,諸如毫碼控制寄存器(mcr)mcr002,其中的一實例于圖4a中示出。mcr002(400)包括判定線程如何表現(xiàn)的smt的各種控件。在一個實施例中,mcr002(400)包括多個字段402,且根據(jù)一個或多個方面使用的這些字段(例如)包括:

(a)暫時停止i取回字段404:此字段的兩個位與線程0及1呈一對一對應(yīng)(如果存在兩個以上的線程,則可能存在兩個以上的位)。當(dāng)位為‘1’b時,這變?yōu)橛行簳r主要超控以阻斷i取回而不管其他控制位的狀態(tài);及

(b)非i取回停止允許字段406:此字段的兩個位與線程0及1呈一對一對應(yīng)(如果存在兩個以上的線程,則可能存在兩個以上的位)。當(dāng)位為‘1’b時,其指示此線程進入代碼的區(qū)段(例如,關(guān)鍵區(qū)段),其中不允許另一線程啟用此線程的停止i取回位。

所使用的另一寄存器為指令地址寄存器,其針對每一線程為唯一的。被稱作iaregfa的此寄存器包括關(guān)于由硬件檢測到的程序中斷的信息。圖4b中示出iaregfa的一個實例。如所示出的,iaregfa450包括多個字段452。根據(jù)一個或多個方面使用的一個字段為字段454,字段454指示線程處于采取異常的過程。

以上寄存器中的每一者可包括額外、較少和/或不同字段。另外,可能存在使用的其他寄存器。本文所述的寄存器及字段為可使用的寄存器和/或字段的實例。另外,mcr及iaregfa僅為寄存器的名稱的實例。許多變型是可能的。

為了增加指令吞吐量,每一線程使用指令管線用于處理,從而允許多個操作被同時執(zhí)行。指令管線包括多個級,且參考圖5描述此類管線的一個實例。參考圖5,支持無序處理的管線500包括(例如):自存儲器取回指令的指令取回級502;形成分派/完成組且將指令放在發(fā)出隊列中的指令譯碼/分派級504;發(fā)出指令(無序)的發(fā)出級506;執(zhí)行指令(無序)的執(zhí)行級508;結(jié)束指令(無序)的結(jié)束級510;涉及架構(gòu)檢查點的完成級512;及恢復(fù)檢查點級514。其他管線可包括額外、較少和/或不同級。本文所述的級僅為實例。

在一個實例中,至多三個指令(具體地說,微操作)可放置在一個組中。然而,某些指令(諸如分支指令)結(jié)束一個組,即使該組不完整。完整的指令組被引導(dǎo)至同一發(fā)出隊列,且隨后,下一組進入另一發(fā)出隊列。

根據(jù)本發(fā)明的一個方面,提供在核心中運行的一個線程停止在該核心內(nèi)執(zhí)行的一個或多個其他線程以執(zhí)行一個或多個操作的能力。在本文所述的實例中,核心為指示存在兩個線程的smt-2設(shè)計。然而,在其他實施例中,可能存在兩個以上的線程。

參考圖6描述用于控制一個或多個線程的執(zhí)行的邏輯的一個實施例。在此實例中,在核心上執(zhí)行的線程0(t0)嘗試停止在核心上執(zhí)行的線程1(t1),且因此,所述描述涉及t0及t1;然而,在其他實施例中,t1可嘗試停止t0;和/或可能存在在核心上執(zhí)行的正在被停止的一個以上的線程。舉例而言,t0可停止t1、t2、t3等。另外,在本文所述的實例中,由核心的固件執(zhí)行所述邏輯;然而,在一個或多個其他實施例中,可由通用軟件執(zhí)行所述邏輯。許多其他變型是可能的。

如參見圖6所描述,在一個實施例中,一個線程停止另一線程的執(zhí)行,且所述停止使用由線程共享的一個或多個寄存器(例如,硬件寄存器)中的一個或多個控件(例如,指示符、位等)。

參考圖6,在一個實施例中,線程0檢查t1(或在其他實施例中,核心的一個或多個線程)是否禁止被停止,步驟600。在一個實例中,這通過檢查mcr002的選定位(例如,位25)以及iaregfa的選定位(例如,位4)來確定。在一個實例中,通過t0測試分支點來完成此步驟,參考stpifalw。stpifalw測試mcr002及iaregfa的選定位。舉例而言,如果mcr0002.25(亦即,mcr002的位25)被設(shè)定為0且iaregifa.4(亦即,iaregifa的位4)被設(shè)定為0,則允許停止t1的i取回。

如果stpifalw指示t1禁止被停止,查詢602,則處理繼續(xù)至步驟600。然而,如果t1未禁止被停止,如由stpifalw指示,且具體地mcr002.25=0及iaregfa.4=0,則處理繼之以t0停止t1上的指令取回及執(zhí)行,步驟604。在一個實例中,這包括t0設(shè)定t1的暫時停止i取回位(例如,mcr002.9),其停止t1上的指令取回及執(zhí)行。使用(例如)“比較并交換r單元寄存器(csgru)”指令或“加載且或r單元寄存器”指令設(shè)定此位,所述指令中的每一者在下文描述。

其后,t0執(zhí)行所有線程的清空操作(drainalltids),步驟606,所述步驟保持t0的指令分派直至t1上的所有指令自管線被清空或清倉,并且查詢t1的狀態(tài)。在一個實例中,清空指令用于執(zhí)行清空操作,所述清空操作的實例在下文描述。

當(dāng)使管線清空其他線程上的指令(查詢608)時,處理繼續(xù)步驟606。然而,響應(yīng)于t1上的指令被清空,t0繼續(xù)t0的指令分派及執(zhí)行,步驟610。

其后,t0再次檢查t1(及其他線程,如果存在的話)是否禁止被停止,以確保t1在被測試之后但在被停止之前不改變其狀態(tài),步驟612。如上文所描述,使用stpifalw執(zhí)行此檢查。如果t1現(xiàn)在禁止被停止,查詢614,則t0允許t1通過停用mcr002的位9(亦即,設(shè)定其為0)來繼續(xù)執(zhí)行,步驟616。處理繼續(xù)至步驟600。

另外,如果t1未禁止被停止,查詢614,則t0執(zhí)行導(dǎo)致t1的停止的指令序列(例如,一個或多個操作),步驟618。在該指令序列完成后,允許t1繼續(xù),步驟620。因此,t0通過使用(例如)“加載且與r單元(lnru)”指令或csgru來重設(shè)mcr002中的位9,如下所述。其后,兩個線程正常執(zhí)行,步驟622。

如上文所描述,多個指令用于控制多線程處理器的一個或多個線程的執(zhí)行。在下文描述這些指令中的每一者。

參考圖7a至7b,描述“清空”指令的一個實施例。具體地說,圖7a示出“清空”指令的格式的一個實施例,且圖7b示出與“清空”指令相關(guān)聯(lián)的邏輯的一個實施例。

參考圖7a,“清空”指令700包括:操作碼字段702,其包括識別清空操作的操作碼;掩碼(m3)字段704,其包括指示延時計數(shù)的值,該值指定多少循環(huán)處理被延時;及指令字段706(i2),其指示清空類型,在此實例中,其為指定將清空所有線程的清空所有tids(線程id)。

在操作中并參考圖7b,線程t0在管線的指令譯碼或分派級暫停t0的指令處理,直至滿足指定條件,步驟750。指令的i2字段的指定位(例如,i2的位0:31,其為(例如)i文本字段的位16:47,該字段包括指令的所有字段)指定在繼續(xù)指令處理之前待滿足哪一(哪些)硬件條件。在一個實施例中,指定條件包括跨線程控制(例如,i2字段的位0;i文本字段的位16),所述跨線程控制檢查t1(或其他線程)的狀態(tài)以判定是否在t1上已暫停處理。當(dāng)i2字段的位0為‘1’b時,其指定將在兩個線程上滿足所有其他清空條件以在此線程上繼續(xù)處理(其他線程未被此線程上的drain阻斷)。當(dāng)使用此功能時,需注意以避免懸置。

在一個或多個實施例中,可在i2字段中指定其他條件。給定位位置中的1指示將在恢復(fù)指令處理之前滿足條件;如果啟用一個以上的位,則將滿足所有選擇的條件。在實施中,在一個實施例中,當(dāng)i文本位16(亦即,i2字段的位0)為1時,在將所選擇的所有功能相“或”之前,在逐位的基礎(chǔ)上執(zhí)行兩個(或所有)硬件線程的狀態(tài)功能的邏輯“或”,以便確定drain條件是否被滿足的最終值。

判定是否已滿足指定條件,查詢752。如果否,則繼續(xù)暫停,步驟750。否則,如果已滿足條件,則處理延時額外數(shù)目的循環(huán),步驟754。此額外數(shù)目可為零或更多,且在清空指令的m3字段中指定。舉例而言,m3字段指定(作為實例)0與15之間的額外數(shù)目的循環(huán)以在滿足i2字段中指定的條件之后延時。在延時額外數(shù)目的循環(huán)后,恢復(fù)指令處理,步驟756。

在一個實施例中,如果同時分派先前指令及清空,則允許先前指令完成分派及正常經(jīng)由管線繼續(xù),但“清空”指令及所有后續(xù)指令將被阻斷分派,直至滿足條件。注意,“清空”指令僅在此線程上操作延遲處理。為了停止另一線程,使用本文所述的技術(shù)。然而,指定位(例如,i2的位0)當(dāng)為1時指示將滿足所有線程上的所有指定條件以在此線程上的“清空”指令后繼續(xù)處理。

如所指示,指令的m3字段指定要在管線處延時的額外循環(huán)的數(shù)目。這可結(jié)合i2字段中的任何已允許條件使用。其亦可指定i2字段皆為0,這在分派處產(chǎn)生立即循環(huán)計數(shù)延遲。即使m3字段為0,亦存在分派“清空”指令的一個循環(huán)的延時。因此,此計數(shù)指定循環(huán)的數(shù)目以多延遲一個循環(huán)。硬件可發(fā)出“清空”指令連同其他指令且其可以以無序方式發(fā)出,原因是其僅影響管線的前端級。

此指令旨在在保證正確操作必需的互鎖未內(nèi)置在硬件中的情況下使用。在大多數(shù)情況下,硬件自管線中的先前指令自動覆蓋窗口。

未由此指令改變條件代碼。

使用的另一指令為“比較并交換r單元寄存器”指令,參考圖8a至圖8b對其進行描述。具體地說,圖8a示出“比較并交換r單元寄存器”指令的格式的一個實施例,且圖8b示出與“比較并交換r單元寄存器”指令相關(guān)聯(lián)的邏輯的一個實施例。應(yīng)注意,本文中論述的指令中的r單元指核心內(nèi)執(zhí)行該指令的特定單元。然而,特定單元的使用并非必需的。可由其他單元或僅由核心執(zhí)行該指令。

參考圖8a,csgru指令800包括:至少一個操作碼字段802a、802b,它們包括指定“比較并交換寄存器”操作的操作碼;第一寄存器字段(r1)804;第二寄存器字段(r3)806;及指令字段(i2)808,在下文描述所述字段中的每一者。

在操作中且參考圖8b,由在選定位(例如,i文本的位22:31(例如,i2字段(808)的位6:15))中指示的10位絕對寄存器數(shù)目所指定的r單元寄存器(在本文中被稱作mcr)的內(nèi)容被與在r1中指定的通用寄存器(gr)的內(nèi)容進行比較,步驟850。如果它們?yōu)橄嗤模樵?52,則將mcr的內(nèi)容寫入r1中指定的通用寄存器,步驟854,且將r3中指定的通用寄存器的內(nèi)容寫入mcr,步驟856。另外,將條件代碼設(shè)定為0,步驟858,且完成csgru的處理。

回到查詢852,如果mcr及r1中指定的寄存器的內(nèi)容不相同,則將mcr的內(nèi)容寫入r1中指定的寄存器,步驟860,且將條件代碼設(shè)定為1,步驟858。這結(jié)束csgru的處理。

csgru的讀取-比較-置換功能為由此線程t0及此處理器的其他線程(例如,t1)觀察的原子操作。在一個實施例中,在slow選項開啟的情況下執(zhí)行csgru以避免跨線程懸置。slow選項通過將i2(808)的選定位(例如,位17)設(shè)定為1來指示,且用于請求緩慢模式,這意味著一次在整個管線中僅存在一個指令。另外,使用如下所述的此指令來執(zhí)行互鎖,且因此,將在本文中被稱作ilock的i2(808)的選定位(例如,位16)設(shè)定為1。

在一個實施例中,如果另一被選擇的指令(諸如,rsr(讀取專用寄存器)、wsr(寫入專用寄存器)、nsr(與專用寄存器)、osr(或?qū)S眉拇嫫?、xsr(異或?qū)S眉拇嫫?、trbit(測試寄存器位)、rasr(讀取絕對專用寄存器)、wasr(寫入絕對專用寄存器)、tarbit(測試絕對寄存器位)、nasr(與絕對專用寄存器)、oasr(或絕對專用寄存器)、xasr(異或絕對專用寄存器)、loru(加載且或r-單元寄存器)、lnru(加載且與r單元寄存器)或csgru(比較并交換r單元寄存器))在此線程(t0)或任何另一線程的管線中且ilock位(例如,i2位16)對另一指令開啟,則拒絕且重新發(fā)出此指令。此指令(例如)僅在已發(fā)出來自此線程的所有先前指令之后發(fā)出且亦強制來自此線程的所有未來指令依賴于該指令。

條件代碼設(shè)定包括(例如):cc0比較相同,r單元寄存器由grr1替換;cc1比較不相同,r單元寄存器不變。

使用的另一指令為“加載且或r單元寄存器(loru)”指令,參考圖9a至9b對該指令進行描述。具體地說,圖9a示出“加載且或r單元寄存器”指令的格式的一個實施例,且圖9b示出與“加載且或r單元寄存器”指令相關(guān)聯(lián)的邏輯的一個實施例。

參考圖9a,loru指令900包括:至少一個操作碼字段902a、902b,它們包括指定加載且或寄存器操作的操作碼;第一寄存器字段(r1)904;第二寄存器字段(r3)906;及指令字段(i2)908,在下文描述這些字段中的每一者。

在操作中且參考圖9b,將由在選定位(例如,i2字段(908)的i文本的位22:31(例如,位6:15))中指示的10位絕對寄存器數(shù)目所指定的r單元寄存器(在本文中被稱作mcr)的內(nèi)容加載至r1中指定的通用寄存器中,步驟950。另外,r3中指定的通用寄存器的內(nèi)容被與mcr的內(nèi)容進行邏輯“或”,步驟952,且將結(jié)果寫入至mcr中,步驟954。

loru的讀取-或-取代(read-or-replace)功能為由此線程t0及此處理器的其他線程(例如,t1)觀察的原子操作。在一個實施例中,在slow選項開啟的情況下執(zhí)行l(wèi)oru以避免跨線程懸置。通過將i2(908)的選定位(例如,位17)設(shè)定為1來指示slow選項。另外,使用如下所述的此指令來執(zhí)行互鎖,且因此,將在本文中被稱作ilock的i2(908)的選定位(例如,位16)設(shè)定為1。

在一個實施例中,如果另一被選擇的指令(諸如,rsr(讀取專用寄存器)、wsr(寫入專用寄存器)、nsr(與專用寄存器)、osr(或?qū)S眉拇嫫?、xsr(異或?qū)S眉拇嫫?、trbit(測試寄存器位)、rasr(讀取絕對專用寄存器)、wasr(寫入絕對專用寄存器)、tarbit(測試絕對寄存器位)、nasr(與絕對專用寄存器)、oasr(或絕對專用寄存器)、xasr(異或絕對專用寄存器)、loru(加載且或r-單元寄存器)、lnru(加載且與r單元寄存器)或csgru(比較并交換r單元寄存器))在此線程(t0)或任何另一線程的管線中且ilock位(i2位16)針對另一指令開啟,則拒絕且重新發(fā)出此指令。此指令(例如)僅在已發(fā)出來自此線程的所有先前指令之后發(fā)出且亦強制來自此線程的所有未來指令依賴于該指令。

條件代碼不變。

使用的另一指令為“加載且與r單元寄存器(lnru)”指令,參考圖10a至圖10b對該指令進行描述。具體地說,圖10a示出“加載且與r單元寄存器”指令的格式的一個實施例,且圖10b示出與“加載且與r單元寄存器”指令相關(guān)聯(lián)的邏輯的一個實施例。

參考圖10a,lnru指令1000包括:至少一個操作碼字段1002a、1002b,它們包括指定“加載且與寄存器”操作的操作碼;第一寄存器字段(r1)1004;第二寄存器字段(r3)1006;及指令字段(i2)1008,在下文描述這些字段中的每一者。

在操作中且參考圖10b,將由在選定位(例如,i文本的位22:31(例如,i2字段(1008)的位6:15))中指示的10位絕對寄存器數(shù)目所指定的r單元寄存器(在本文中被稱作mcr)的內(nèi)容加載至r1中指定的通用寄存器中,步驟1050。另外,r3中指定的通用寄存器的內(nèi)容被與mcr的內(nèi)容進行邏輯“與”,步驟1052,且將結(jié)果寫入至mcr中,步驟1054。

lnru的讀取-與-取代(read-and-replace)功能為由此線程t0及此處理器的其他線程(例如,t1)觀察的原子操作。在一個實施例中,在slow選項開啟的情況下執(zhí)行l(wèi)nru以避免跨線程懸置。通過將i2(1008)的選定位(例如,位17)設(shè)定為1來指示slow選項。另外,使用如下所述的此指令來執(zhí)行互鎖,且因此,將在本文中被稱作ilock的i2(1008)的選定位(例如,位16)設(shè)定為1。

在一個實施例中,如果另一被選擇的指令(諸如,rsr(讀取專用寄存器)、wsr(寫入專用寄存器)、nsr(與專用寄存器)、osr(或?qū)S眉拇嫫?、xsr(異或?qū)S眉拇嫫?、trbit(測試寄存器位)、rasr(讀取絕對專用寄存器)、wasr(寫入絕對專用寄存器)、tarbit(測試絕對寄存器位)、nasr(與絕對專用寄存器)、oasr(或絕對專用寄存器)、xasr(異或絕對專用寄存器)、loru(加載且或r-單元寄存器)、lnru(加載且與r單元寄存器)或csgru(比較并交換r單元寄存器))在此線程(t0)或任何另一線程的管線中且ilock位(例如,i2位16)針對另一指令開啟,則拒絕且重新發(fā)出此指令。此指令(例如)僅在已發(fā)出來自此線程的所有先前指令之后發(fā)出且亦強制來自此線程的所有未來指令依賴于該指令。

條件代碼不變。

lnru以及l(fā)oru及csgru使用smt核心中的所有線程可存取的寄存器,而非作為共享通信的手段的存儲裝置。這些寄存器為(例如)與處理器的存儲器或存儲裝置分離的硬件寄存器。舉例而言,在一種核心設(shè)計中,存在核心上的所有線程共享(公用)的大約64個寄存器;線程可自由地讀取及寫入這些共享寄存器。在控制寄存器的一些情況下,如果兩個線程嘗試在無特殊互鎖的情況下寫入這些寄存器,則可能失去藉由線程中的一者的更新。在其他情況下,僅準(zhǔn)許線程中的一者“擁有”由寄存器中的位控制的資源。因此,在共享寄存器上操作的這些原子指令用于控制及定序?qū)@些共享寄存器的存取。

lnru、loru及csgru均允許通過使用互鎖進行的通用寄存器與mcr跨線程之間的原子操作來控制線程間操作及執(zhí)行。如所指示,所述指令中的每一者具有ilock位,且當(dāng)該位針對在管線中執(zhí)行的指令開啟時,如果第二指令進入管線(該第二指令的ilock位亦被設(shè)定),則該第二指令被拒絕(且當(dāng)?shù)谝恢噶钔瓿蓵r稍后被重新執(zhí)行)。這確保了對線程之間的這些寄存器的存取的原子性。

存在(例如)兩種類型的互鎖指令:單一微操作μop指令,諸如lnru及l(fā)oru;及二μop指令,諸如csgru。藉由單一μop指令,互鎖在μop發(fā)出(rsr及wsr型指令)時被設(shè)定,且在rsr型的μop完成時及wsr型的檢查點上被清除。在二μop指令中,互鎖在第一μop(rsr型)發(fā)出時被設(shè)定且在第二μop(wsr型)的檢查點處被清除。

參考圖11a至11b描述關(guān)于使用互鎖的其他細節(jié)及互鎖。藉由核心(且具體地說,藉由在其上發(fā)出指令的管線)執(zhí)行此邏輯。

最初參考圖11a,由多線程處理器獲得待執(zhí)行的指令(例如,lnru、loru、csgru),步驟1100。由執(zhí)行操作的多線程處理器來啟動該指令的執(zhí)行,步驟1102。所述操作包括待原子地執(zhí)行的多個子操作。判定是否繼續(xù)執(zhí)行該指令,查詢1104。所述判定使用(例如)互鎖以判定該指令是否具有對由線程及一個或多個其他線程所共享的一個或多個寄存器的原子存取。

如果繼續(xù)執(zhí)行該指令,則執(zhí)行繼續(xù),這包括使用至少一個共享寄存器執(zhí)行操作,步驟1106。另外,如果指令不繼續(xù),則拒絕該指令,步驟1108。

參考圖11b描述與互鎖相關(guān)的其他細節(jié)。最初,當(dāng)指令進入r單元時,在一個實例中,檢查是否設(shè)定了鎖指示符(諸如入站指令的ilock位(例如,i文本的位32,亦稱為i2的位16))(例如,設(shè)定為1),查詢1150。如果ilock位未被設(shè)定,則完成互鎖處理;然而,如果入站指令中的ilock位被設(shè)定,則進一步判定是否設(shè)定了鎖(被稱作互鎖),查詢1152?;ユi被放置于多個線程可存取的硬件寄存器中。

如果設(shè)定了互鎖(例如,位被設(shè)定為1),從而指示另一指令正處理設(shè)定其ilock位,則拒絕入站指令,步驟1153。

然而,如果未設(shè)定互鎖,則對其進行設(shè)定,步驟1154,且繼續(xù)進行指令處理(例如,在管線中),步驟1156。當(dāng)指令完成(或設(shè)置了檢查點)時,重設(shè)互鎖(例如,設(shè)定為0),步驟1158。

關(guān)于互鎖的其他細節(jié)包括:

(a)例如在如下情況時,可由管線0設(shè)定互鎖:

-在需要設(shè)定互鎖的管線0中存在指令且該指令被單獨發(fā)出

-在需要設(shè)定互鎖的管線0中存在指令且在不希望設(shè)定鎖的管線1中存在另一指令,兩個指令均來自同一線程。

-在需要設(shè)定互鎖的管線0中存在指令且在需要設(shè)定鎖的管線1中存在另一指令,但管線0中的指令更早,兩個指令均來自同一線程。

-在需要設(shè)定互鎖的管線0中存在指令且在不希望設(shè)定鎖的管線1中存在另一指令,兩個指令來自不同線程。

-在需要設(shè)定互鎖的管線0中存在指令且在需要設(shè)定鎖的管線1中存在另一指令,兩個指令來自不同線程,且lfsr(線性反饋移位寄存器)指向管線0。lfsr用于產(chǎn)生偽隨機數(shù)且通過采取該數(shù)的最高有效位,在兩個管線之間提供偽隨機選擇(亦即,隨機選擇哪一管線將設(shè)定互鎖)。

在一個實例中,互鎖是針對分派組中的每一可能指令具有一個位的向量。舉例而言,在一個實例中,在一個分派組中可能存在至多三個指令,且因此,互鎖包括三個位,每一指令一個。當(dāng)位被設(shè)定為(例如)1時,這指示與該位相關(guān)聯(lián)的指令具有互鎖。

亦可由如上文所述的管線1設(shè)定互鎖,然而用管線1替換管線0,且用管線0替換管線1。

(b)例如在如下情況時,執(zhí)行互鎖的設(shè)定:

-在管線中存在有效指令,“與”(and)

-設(shè)定了ilock,“與”

-設(shè)定了predec_rd(亦即,讀取(rsr)型指令的早期指示)或predec_wr(亦即,寫入(wsr)型指令的早期指示),“與”

-管線中的指令未被清倉/被xcond編碼,“與”

-可由該管線(根據(jù)(a))設(shè)定互鎖,“與”

-互鎖尚未被設(shè)定

(c)例如在如下情況時更新互鎖

-在管線中存在有效指令,“與”

-設(shè)定了ilock,“與”

-設(shè)定了predec_rd或predec_wr,“與”

-管線中的指令未被清倉/被xcond編碼,“與”

-已設(shè)定了互鎖,“與”

-instruction.gtag(包括該指令的分派組的標(biāo)識符)=interlock.gtag(亦即,與該指令相關(guān)聯(lián)的標(biāo)識符=設(shè)定互鎖的標(biāo)識符),“與”

-instruction.th_id(線程id)=interlock.th_id

在一個實施例中,如果在組中不存在抓取鎖的寫入型微操作(μop),則針對組完成執(zhí)行互鎖的重設(shè)。如果在組中存在寫入型μop但其未抓取鎖,則亦針對該完成釋放鎖(未抓取鎖=ilock位為0,此為csgru的ilock位亦在wsr部分中設(shè)定使得其針對rsr的完成未被釋放的原因)。如果寫入型指令亦抓取鎖,則鎖將僅針對檢查點被釋放。以此方式將見到原子性。一個例外是csgru,其中wsr在第二組中,因此第一組的rsr設(shè)定鎖且第二組中的wsr釋放鎖。在該情況下,第一組在第二組(其具有g(shù)tag,比第一組的gtag大1)之前出現(xiàn)。

如果組中的μop不持有鎖,則該μop的拒絕可能不重設(shè)鎖。在一個實例中,如果組中不存在亦持有鎖的其他μop,則拒絕將僅釋放鎖。

如果組中的μop不持有鎖,則該μop的撤銷可能不重設(shè)鎖。在一個實例中,如果組中不存在亦持有鎖的其他μop,則撤銷將僅釋放鎖。

當(dāng)xcond出現(xiàn)時,檢查是否可釋放互鎖。問題在于xcond應(yīng)僅在抓取鎖的指令尚未完成時釋放鎖。如果抓取鎖的指令已完成,則xcond不應(yīng)對鎖有影響(這對于抓取鎖的寫入型指令為真,原因是該指令將針對檢查點釋放鎖。對于讀取型指令,針對完成已進行釋放)。一個例外是csgru,其讀取型部分可能已完成,但如果在寫入型完成之前可能存在xcond,則將釋放鎖(如果寫入型完成,則隨后將出現(xiàn)的xcond應(yīng)對互鎖無影響)。

在需要將設(shè)定鎖的指令清倉的情況下重設(shè):例如,僅在該組的任何指令不再持有鎖的情況下才進行實際重設(shè)。舉例而言,如果清倉命中組中的第一μop且此μop持有鎖,則鎖空閑(當(dāng)然,兩個其他μop亦可持有鎖但它們被清倉)。如果清倉出現(xiàn)在組中的第二μop上且此μop持有鎖,則鎖僅在例如第一μop亦不持有鎖的情況下才空閑(第三μop將無論如何被清倉,因此不需要對其進行檢查)。

(d)例如在如下情況時重設(shè)互鎖:

-已設(shè)定互鎖為“與”

-根據(jù)(c),未更新為“與”

(

抓取鎖的指令正在完成:

-對其鎖定的讀取指令正在完成“與”

-此并非csgru的第一組完成

(

抓取鎖的指令被設(shè)置檢查點:

-對其進行鎖定的寫入指令被設(shè)置檢查點“與”

-interlock.gtag=instruction.gtag

-如果此為csgru的第二組完成,則等待其被設(shè)置檢查點“與”

-interlock.gtag+1=instruction.gtag

)

拒絕抓取鎖的μop且在該組中無其他持有者

撤銷抓取鎖的μop且在該組中無其他持有者

抓取鎖的μop被清倉/被xcond編碼且在該組中無其他持有者

恢復(fù)進行中

)

(e)例如在如下情況時拒絕

1)互鎖被鎖定為“與”

instruction.th_id!=(不同)interlock.th_id“與”

instruction.gtag!=interlock.gtag

對于csgru操作碼,當(dāng)由rsrμop鎖定互鎖時,這消除wsrμop的拒絕(這些μop具有相同gtag及相同線程id)。

針對類似發(fā)出為有序的組(rsr、x、wsr)亦是如此,但出于某一原因rsr被拒絕且因此wsr鎖定該鎖。在此情況下,如果拒絕將基于個別指令id,則由于鎖被鎖定,rsr將不能進入,且整個組將不能完成==>死鎖,原因是wsr無法釋放鎖。解決方案為使用gtag,如此rsr將能夠進入且當(dāng)其完成時,wsr亦將能夠完成且將釋放鎖。

2)兩個管線上的同一線程“與”

在兩個管線中開啟ilock“與”

當(dāng)前管線持有較新指令

==>應(yīng)拒絕當(dāng)前較新指令(同樣,如果尚未由較舊指令開啟互鎖位)。

在開啟互鎖的情況下,亦應(yīng)通過(1)條件拒絕較舊者(除非此為csgru指令的wsr)。

3)在兩個管線上的不同線程“與”

在兩個管線中開啟ilock“與”

當(dāng)前的管線數(shù)目并不與lfsr的值相等(其針對管線0為0且針對管線1為1)==>應(yīng)拒絕當(dāng)前管線_x指令(同樣,如果尚未由較舊指令開啟互鎖位)。

在開啟互鎖的情況下,亦應(yīng)通過(1)條件拒絕兩者(除非其中一者為csgru指令的wsr)。

本文描述用于一個線程停止多線程處理器的一個或多個其他線程的執(zhí)行的技術(shù)的一個實施例。實施所述技術(shù)以避免懸置且確保與其他線程相關(guān)聯(lián)的所有指令在它們被停止之前完成。在一個方面中,此技術(shù)包括管線清空指令,該指令自處理器的所有硬件線程(或在另一實施例中的被選擇的線程)查看狀態(tài)信息以了解在此線程處繼續(xù)操作之前是否滿足條件。

此外,此技術(shù)的一個實施例使用原子指令(諸如csgru、loru及l(fā)nru)以在共享寄存器上操作。舉例而言,在多線程核心設(shè)計(例如,smt)中,當(dāng)兩個或兩個以上線程共享公用核心時,它們通常需要傳送及共享信息;這可包括信號量、鎖等。這可涉及固件、毫碼或可涉及軟件。線程可使用經(jīng)由存儲器傳送的現(xiàn)有isa指令。然而,這可能較慢且涉及存儲-命中-載入(store-hit-load)或載入-命中-存儲(load-hit-store)沖突(通常被稱為操作數(shù)存儲比較(operandstorecompare;osc))。另外,如果由固件完成傳送,則經(jīng)由存儲器傳送可為非所需要的或不可能的;固件例程可在禁止操作數(shù)加載及存儲的關(guān)鍵序列的中間。因此,這些指令在寄存器而非存儲器上操作。

盡管關(guān)于控制線程的執(zhí)行來描述原子指令,但這些指令可用于其他目的。每一指令獨立于本文所述的使用且可用于其他情況。

參考圖12,在一個實例中,計算機程序產(chǎn)品1200包括(例如)將計算機可讀程序代碼部件、邏輯和/或指令1204存儲在其上以提供及促進一個或多個實施例的一個或多個非瞬時性計算機可讀存儲介質(zhì)1202。

本發(fā)明可為一種系統(tǒng)、方法和/或計算機程序產(chǎn)品。計算機程序產(chǎn)品可包括計算機可讀存儲介質(zhì)(或多個介質(zhì)),其上具有計算機可讀程序指令以用于使處理器執(zhí)行本發(fā)明的方面。

計算機可讀存儲介質(zhì)可為有形設(shè)備,其可保持及存儲指令以供指令執(zhí)行設(shè)備使用。計算機可讀存儲介質(zhì)可為(例如但不限于):電子存儲設(shè)備、磁性存儲設(shè)備、光學(xué)存儲設(shè)備、電磁存儲設(shè)備、半導(dǎo)體存儲設(shè)備或前述各者的任何合適組合。計算機可讀存儲介質(zhì)的更特定實例的非窮盡性列表包括以下各者:便攜式計算機磁盤、硬盤、隨機存取存儲器(ram)、只讀存儲器(rom)、可擦除可編程只讀存儲器(eprom或閃存)、靜態(tài)隨機存取存儲器(sram)、便攜式光盤只讀存儲器(cd-rom)、數(shù)字化通用光盤(dvd)、記憶棒、軟盤、機械編碼設(shè)備(諸如其上記錄有指令的打孔卡片或凹槽中的凸起結(jié)構(gòu))及前述各者的任何合適組合。如本文中所使用,不將計算機可讀存儲介質(zhì)本身理解為瞬時性信號,諸如無線電波或其他自由傳播的電磁波、經(jīng)由波導(dǎo)或其他傳輸介質(zhì)傳播的電磁波(例如,經(jīng)由光纖線纜傳遞的光脈沖),或經(jīng)由導(dǎo)線傳輸?shù)碾娦盘枴?/p>

本文中所描述的計算機可讀程序指令可經(jīng)由網(wǎng)絡(luò)(例如,因特網(wǎng)、局域網(wǎng)絡(luò)、廣域網(wǎng)和/或無線網(wǎng)絡(luò))自計算機可讀存儲介質(zhì)下載至相應(yīng)計算/處理設(shè)備或下載至外部計算機或外部存儲設(shè)備。網(wǎng)絡(luò)可包括銅傳輸線纜、光學(xué)傳輸光纖、無線傳輸、路由器、防火墻、交換器、網(wǎng)關(guān)計算機和/或邊緣服務(wù)器。每一計算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或網(wǎng)絡(luò)接口自網(wǎng)絡(luò)接收計算機可讀程序指令且遞送計算機可讀程序指令以用于存儲在相應(yīng)計算/處理設(shè)備內(nèi)的計算機可讀存儲介質(zhì)中。

用于執(zhí)行本發(fā)明的操作的計算機可讀程序指令可為以一種或多種程序設(shè)計語言的任何組合撰寫的匯編指令、指令集架構(gòu)(isa)指令、機器指令、機器相關(guān)指令、微碼、固件指令、狀態(tài)設(shè)定數(shù)據(jù)或源代碼或目標(biāo)碼,所述一種或多種程序設(shè)計語言包括諸如smalltalk、c++或其類似者的面向?qū)ο蟮某绦蛟O(shè)計語言,及諸如“c”程序設(shè)計語言或類似程序設(shè)計語言的常規(guī)程序程序設(shè)計語言。計算機可讀程序指令可完全在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為獨立軟件包執(zhí)行、部分地在用戶計算機上執(zhí)行且部分地在遠程計算機上執(zhí)行或完全在遠程計算機或服務(wù)器上執(zhí)行。在后一情形中,所述遠程計算機可經(jīng)由任何類型的網(wǎng)絡(luò)(包括局域網(wǎng)絡(luò)(lan)或廣域網(wǎng)(wan))連接至用戶的計算機,或可連接至外部計算機(例如,使用因特網(wǎng)服務(wù)提供商,經(jīng)由因特網(wǎng))。在一些實施例中,電子電路(包括例如可編程邏輯電路、現(xiàn)場可編程門陣列(fpga)或可編程邏輯陣列(pla))可藉由利用計算機可讀程序指令的狀態(tài)信息來個人化電子電路而執(zhí)行計算機可讀程序指令,以執(zhí)行本發(fā)明的方面。

本文參考根據(jù)本發(fā)明的實施例的方法、裝置(系統(tǒng))及計算機程序產(chǎn)品的流程圖說明和/或方塊圖來描述本發(fā)明的方面。應(yīng)理解,可由計算機可讀程序指令實施流程圖說明和/或方塊圖的每一區(qū)塊,及流程圖說明和/或方塊圖中的區(qū)塊的組合。

可將這些計算機可讀程序指令提供至通用計算機、專用計算機或其他可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生機器,以使得經(jīng)由所述計算機或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令建立用于實施一個或多個流程圖和/或方塊圖區(qū)塊中所指定的功能/動作的部件。亦可將這些計算機可讀程序指令存儲在計算機可讀存儲介質(zhì)中,所述指令可引導(dǎo)計算機、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備以特定方式工作,使得其中存儲有指令的計算機可讀存儲介質(zhì)包括制品,所述制品包括實施一個或多個流程圖和/或方塊圖區(qū)塊中指定的功能/動作的方面的指令。

計算機可讀程序指令亦可加載至計算機、其他可編程數(shù)據(jù)處理裝置或其他設(shè)備上,以使一系列操作步驟在所述計算機、其他可編程裝置或其他設(shè)備上執(zhí)行以產(chǎn)生計算機實施的過程,使得在所述計算機、其他可編程裝置或其他設(shè)備上執(zhí)行的指令實施一個或多個流程圖和/或方塊圖區(qū)塊中所指定的功能/動作。

附圖中的流程圖及方塊圖例示根據(jù)本發(fā)明的各種實施例的系統(tǒng)、方法及計算機程序產(chǎn)品的可能實施方式的架構(gòu)、功能性及操作。就此而言,流程圖或方塊圖中的每一區(qū)塊可表示指令的模塊、區(qū)段或部分,其包括用于實施指定邏輯功能的一個或多個可執(zhí)行指令。在一些備選實施方式中,區(qū)塊中提及的功能可不按附圖中所提及的次序發(fā)生。舉例而言,取決于所涉及的功能性,以連續(xù)方式展示的兩個區(qū)塊實際上可實質(zhì)上同時執(zhí)行,或所述區(qū)塊有時可以相反次序執(zhí)行。亦將注意,可藉由執(zhí)行指定功能或動作或進行專用硬件及計算機指令的組合的基于專用硬件的系統(tǒng)實施方塊圖和/或流程圖說明的每一區(qū)塊,及方塊圖和/或流程圖說明中的區(qū)塊的組合。

雖然上文描述各種實施例,但它們僅為實例。舉例而言,其他架構(gòu)的計算環(huán)境可用于結(jié)合并使用一個或多個實施例。另外,本發(fā)明的一個或多個方面適用于除smt外的多線程的形式。又另外,可使用不同指令、指令格式、指令字段和/或指令值。許多變型是可能的。

另外,其他類型的計算環(huán)境可以是有益的且可被使用。作為一實例,可使用適合于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng),其包括直接或經(jīng)由系統(tǒng)總線間接地耦接至存儲組件的至少兩個處理器。存儲組件包括(例如)在程序代碼的實際執(zhí)行期間使用的本地存儲器、大容量存儲器及高速緩沖存儲器,所述存儲組件對至少某一程序代碼提供暫時存儲以便減少在執(zhí)行期間必須自大容量存儲器取回程序代碼的次數(shù)。

輸入/輸出或i/o設(shè)備(包括(但不限于)鍵盤、顯示器、指點設(shè)備、dasd、磁帶、cd、dvd、拇指驅(qū)動器(thumbdrive)及其他存儲介質(zhì)等)可直接地或經(jīng)由中間i/o控制器耦接至系統(tǒng)。網(wǎng)絡(luò)適配器亦可耦接至系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠變成經(jīng)由中間專用網(wǎng)或公用網(wǎng)絡(luò)耦接至其他數(shù)據(jù)處理系統(tǒng)或遠程打印機或存儲設(shè)備。調(diào)制解調(diào)器、線纜調(diào)制解調(diào)器及以太網(wǎng)卡僅為幾個可用類型的網(wǎng)絡(luò)適配器。

本文中所使用的術(shù)語僅出于描述特定實施例的目的且并不意欲為限制性的。如本文中所使用,除非上下文另外清楚地指示,否則單數(shù)形式“一”、“一個”及“該”意欲包括復(fù)數(shù)形式。應(yīng)進一步理解,術(shù)語“包括”和/或“包含”在用于本說明書中時指定所陳述特征、整數(shù)、步驟、操作、元件和/或組件的存在,但不排除一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組合的存在或添加。

以下的權(quán)利要求中的對應(yīng)結(jié)構(gòu)、材料、操作以及所有功能性限定的裝置或步驟的等同替換,旨在包括任何用于與在權(quán)利要求中具體指出的其它單元相組合地執(zhí)行該功能的結(jié)構(gòu)、材料或操作。所給出的對本發(fā)明的描述其目的在于示意和描述,并非是窮盡性的,也并非是要將本發(fā)明限定到所表述的形式。對于所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,顯然可以作出許多修改和變型。對實施例的選擇和說明,是為了最好地解釋本發(fā)明的原理和實際應(yīng)用,使所屬技術(shù)領(lǐng)域的普通技術(shù)人員能夠明了,本發(fā)明可以有適合所要的特定用途的具有各種改變的各種實施方式。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
客服| 儋州市| 丰都县| 防城港市| 三江| 汤阴县| 兰坪| 修武县| 禹州市| 宁南县| 横山县| 阜南县| 天峻县| 沭阳县| 萍乡市| 东山县| 大同市| 雅江县| 孟州市| 盐源县| 多伦县| 平远县| 太仆寺旗| 龙州县| 筠连县| 凤城市| 忻城县| 竹溪县| 江华| 涡阳县| 乌审旗| 方城县| 武陟县| 洛阳市| 城口县| 保定市| 宜章县| 黄龙县| 石狮市| 望江县| 萍乡市|