本公開內(nèi)容一般涉及電子器件,并且更具體地,本公開內(nèi)容的實(shí)施例涉及具有執(zhí)行事務(wù)性功率管理的功率事務(wù)單元的硬件處理器。
背景技術(shù):
處理器(或處理器集合)執(zhí)行來自指令集(例如指令集體系結(jié)構(gòu)(ISA))的指令。指令集是與編程有關(guān)的計(jì)算機(jī)體系結(jié)構(gòu)的一部分,并且通常包括原生數(shù)據(jù)類型、指令、寄存器體系結(jié)構(gòu)、尋址模式、存儲(chǔ)器體系結(jié)構(gòu)、中斷和異常處理及外部輸入和輸出(I/O)。
附圖說明
本公開內(nèi)容通過示例示出附圖的圖形,并且并不限于附圖的圖形;附圖中,相同的附圖標(biāo)記表示類似的元素,并且其中:
圖1示出根據(jù)本公開內(nèi)容的實(shí)施例的硬件設(shè)備。
圖2示出根據(jù)本公開內(nèi)容的實(shí)施例的集成電路。
圖3示出根據(jù)本公開內(nèi)容的實(shí)施例的集成電路。
圖4示出根據(jù)本公開內(nèi)容的實(shí)施例的用于不具有功率事務(wù)的系統(tǒng)的功率管理代碼。
圖5示出根據(jù)本公開內(nèi)容的實(shí)施例的用于具有功率事務(wù)的系統(tǒng)的功率管理代碼。
圖6示出根據(jù)本公開內(nèi)容的實(shí)施例的具有原子功率事務(wù)和不具有原子功率事務(wù)的計(jì)時(shí)(timing)示意圖。
圖7示出根據(jù)本公開內(nèi)容的實(shí)施例的流程圖。
圖8示出根據(jù)本公開內(nèi)容的實(shí)施例的流程圖。
圖9A是根據(jù)本公開內(nèi)容的實(shí)施例的示出示范有序流水線和示范寄存器重命名、無序發(fā)布/執(zhí)行流水線的框圖。
圖9B是根據(jù)本公開內(nèi)容的實(shí)施例的示出有序體系結(jié)構(gòu)核的示范實(shí)施例和要包括在處理器中的示范寄存器重命名、無序發(fā)布/執(zhí)行體系結(jié)構(gòu)核兩者的框圖。
圖10A是根據(jù)本公開內(nèi)容的實(shí)施例的單個(gè)處理器核連同其到管芯上互連網(wǎng)絡(luò)的連接和其二級(jí)(L2)高速緩存的本地子集的框圖。
圖10B是根據(jù)本公開內(nèi)容的實(shí)施例的在圖10A中的處理器核的部分的展開圖。
圖11是根據(jù)本公開內(nèi)容的實(shí)施例的可具有多于一個(gè)核,可具有集成存儲(chǔ)器控制器和可具有集成圖形的處理器的框圖。
圖12是根據(jù)本公開內(nèi)容的一個(gè)實(shí)施例的系統(tǒng)的框圖。
圖13是根據(jù)本公開內(nèi)容的實(shí)施例的更具體的示范系統(tǒng)的框圖。
圖14示出的是根據(jù)本公開內(nèi)容的實(shí)施例的第二更具體的示范系統(tǒng)的框圖。
圖15示出的是根據(jù)本公開內(nèi)容的實(shí)施例的片上系統(tǒng)(SoC)的框圖。
圖16是根據(jù)本公開內(nèi)容的實(shí)施例的對(duì)比將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中二進(jìn)制指令的軟件指令轉(zhuǎn)換器的使用的框圖。
具體實(shí)施方式
在下面的描述中,陳述了許多特定細(xì)節(jié)。然而,要理解的是,本公開內(nèi)容的實(shí)施例可不具有這些特定細(xì)節(jié)而實(shí)施。在其它實(shí)例中,公知的電路、結(jié)構(gòu)和技術(shù)未詳細(xì)顯示以免模糊對(duì)此描述的理解。
說明書中對(duì)“一個(gè)實(shí)施例”、“一實(shí)施例”、“示例實(shí)施例”等的引用指示所描述的實(shí)施例可包括特定特征、結(jié)構(gòu)或特性,但每個(gè)實(shí)施例可不必須包括特定特征、結(jié)構(gòu)或特性。另外,此類短語不必須表示同一實(shí)施例。此外,在結(jié)合實(shí)施例描述特定特征、結(jié)構(gòu)或特性時(shí),認(rèn)為結(jié)合無論是否明確描述的其它實(shí)施例影響此類特征、結(jié)構(gòu)或特性是在本領(lǐng)域技術(shù)人員的認(rèn)知之內(nèi)。
(例如硬件)處理器(或處理器的集合)執(zhí)行來自指令集(例如指令集體系結(jié)構(gòu)(ISA))的指令。指令集是與編程有關(guān)的計(jì)算機(jī)體系結(jié)構(gòu)的一部分,并且通常包括原生數(shù)據(jù)類型、指令、寄存器體系結(jié)構(gòu)、尋址模式、存儲(chǔ)器體系結(jié)構(gòu)、中斷和異常處理及外部輸入和輸出(I/O)。應(yīng)注意的是,本文中的術(shù)語指令可表示宏指令,例如,提供到處理器以便執(zhí)行的指令,或者表示微指令,例如,從將宏指令解碼的處理器的解碼單元(解碼器)得到的指令。處理器(例如,具有解碼和/或執(zhí)行指令的一個(gè)或更多個(gè)核)可對(duì)數(shù)據(jù)進(jìn)行操作(例如在執(zhí)行算術(shù)、邏輯或其它功能中)。
硬件處理器(例如,作為計(jì)算系統(tǒng)的一部分)可例如根據(jù)高級(jí)配置和功率接口(ACPI)規(guī)范,在功率狀態(tài)之間轉(zhuǎn)變一個(gè)或更多個(gè)其組件(例如,核和/或裝置)的功率。在一個(gè)實(shí)施例中,可在多操作狀態(tài)、閑置狀態(tài)或關(guān)閉狀態(tài)之一為組件供電。例如,第一功率狀態(tài)可以是最大功率和頻率,并且第二功率狀態(tài)可以是更低功率和頻率(例如,但不是閑置)。功率狀態(tài)轉(zhuǎn)變可占用多個(gè)時(shí)鐘周期(例如,由于多個(gè)指令被執(zhí)行而引起功率狀態(tài)轉(zhuǎn)變)以執(zhí)行從第一狀態(tài)到第二狀態(tài)的轉(zhuǎn)變(例如在請(qǐng)求時(shí))。功率可由電池或其它電源提供。通過在沒有操作要執(zhí)行(例如無指令要由處理器的核執(zhí)行)時(shí),將處理器和/或其裝置(例如,顯示器、輸入/輸出(I/O)端口等)置于各種功率狀態(tài)(例如閑置或關(guān)閉狀態(tài)),功率管理單元可保存功率。在某些實(shí)施例中,功率管理單元可通過做出功率狀態(tài)確定和/或轉(zhuǎn)變來管理功耗。另外地或備選地,功率管理可由操作系統(tǒng)(OS)(例如借助于在OS與將使其功率狀態(tài)轉(zhuǎn)變(例如,修改)的裝置之間的驅(qū)動(dòng)程序通信)來實(shí)現(xiàn)。
在本公開內(nèi)容的某些實(shí)施例中,功率管理可利用與軟件(例如,OS和/或應(yīng)用程序)共存的處理器(例如,一個(gè)或多個(gè)低功率微控制器)。在本公開內(nèi)容的某些實(shí)施例(例如,針對(duì)能效)中,OS可分散在其域內(nèi)的功率控制,例如,讓每個(gè)裝置域控制其自己的狀態(tài)。然而,從功率管理流程角度而言,由于功率管理(例如,轉(zhuǎn)變)命令例如通過功率管理單元發(fā)布和/或執(zhí)行,這可導(dǎo)致爭用和競爭狀況。這可通過采用一個(gè)或多個(gè)鎖(例如,使用信號(hào)量或其它方法)以例如,在另一功率轉(zhuǎn)變(例如,過程)發(fā)生時(shí)中止或取消一個(gè)功率轉(zhuǎn)變請(qǐng)求來解決。這可引起能效低,例如,如果針對(duì)整個(gè)功率轉(zhuǎn)變而保持鎖(例如,或裝置級(jí)控制或裝置的集合或用于平臺(tái))。本公開內(nèi)容的某些實(shí)施例可提供可擴(kuò)展功率管理,例如不利用鎖。本公開內(nèi)容的某些實(shí)施例可提供不利用粗粒度鎖或同步功率管理,例如,在OS中或者通過功率管理單元(例如,處理器的功率管理控制器(PMC)或存儲(chǔ)器控制器單元(SCU))或兩者的組合。本公開內(nèi)容的某些實(shí)施例可提供功率管理而無需通過OS置入(例如,高級(jí)、粗粒度)鎖,其中,一次只可發(fā)送一個(gè)功率轉(zhuǎn)變(例如,請(qǐng)求)到硬件。
本公開內(nèi)容的某些實(shí)施例包括執(zhí)行事務(wù)性功率管理的方法和功率管理設(shè)備(例如,一個(gè)或多個(gè)處理器和/或一個(gè)或多個(gè)片上系統(tǒng)(SOC))。例如,(例如,裝置、組件和/或功率域的)每個(gè)功率狀態(tài)轉(zhuǎn)變可表示為事務(wù)。在一個(gè)實(shí)施例中,通過接收例如發(fā)送到功率管理單元的控制輸入(例如,用于每個(gè)功率域的輸入)的功率管理命令,可請(qǐng)求功率狀態(tài)轉(zhuǎn)變(例如,從一個(gè)狀態(tài)到不同狀態(tài))。本公開內(nèi)容的某些實(shí)施例包括使功率管理命令并行的方法和功率管理設(shè)備。本公開內(nèi)容的某些實(shí)施例包括執(zhí)行事務(wù)性功率管理的方法和事務(wù)性存儲(chǔ)器(例如,管理)設(shè)備。根據(jù)本公開內(nèi)容的功率管理可包括功率管理硬件、軟件、固件或其任何組合。
在一個(gè)實(shí)施例中,根據(jù)原子性、一致性、隔離和耐久性(ACID)屬性的一個(gè)、全部屬性或任何組合來保證事務(wù)。原子性(例如,是原子的)可通常表示事務(wù)為“全有或全無”。例如,如果事務(wù)的一部分失敗,則整個(gè)事務(wù)失敗,并且數(shù)據(jù)(對(duì)所述數(shù)據(jù)進(jìn)行操作)保持不變。原子系統(tǒng)可保證在每一和每個(gè)種情況中的原子性,例如,包括功率失敗、錯(cuò)誤和崩潰。在事務(wù)外,提交的事務(wù)顯得(例如,通過其對(duì)對(duì)數(shù)據(jù)的操作的影響)不可見(“原子”),并且中止的事務(wù)(例如,未提交的)顯得未曾發(fā)生。一致性可通常表示任何事務(wù)將把數(shù)據(jù)從一個(gè)有效狀態(tài)帶到另一狀態(tài)。例如,根據(jù)所有定義的規(guī)則,例如,包括約束、級(jí)聯(lián)、觸發(fā)和其任何組合,任何寫入的數(shù)據(jù)將是有效的。這可不完全保證事務(wù)的正確性,例如,其可以是應(yīng)用級(jí)代碼的責(zé)任,但可保證任何編程錯(cuò)誤將不導(dǎo)致違反任何定義的規(guī)則。隔離可通常表示事務(wù)(例如,線程)的并發(fā)執(zhí)行,導(dǎo)致與如果那些事務(wù)例如一個(gè)接一個(gè)連續(xù)執(zhí)行而將獲得的相同系統(tǒng)狀態(tài)。并發(fā)控制可提供隔離。例如,取決于并發(fā)控制方法,不完整事務(wù)的效果可對(duì)其它一個(gè)或多個(gè)事務(wù)不可見。耐久性可通常表示一旦事務(wù)已提交,它便將保持如此,例如,甚至如果功率損耗、崩潰或錯(cuò)誤發(fā)送。例如,為防止功率損耗,事務(wù)(或其影響)可記錄在非易失性(例如,持久性)存儲(chǔ)器中。
本公開內(nèi)容的某些實(shí)施例包括將一個(gè)或多個(gè)功率狀態(tài)轉(zhuǎn)變表示為一個(gè)或多個(gè)事務(wù)的方法和功率管理設(shè)備。這可允許得到裝置(例如,處理器、片上系統(tǒng)(SoC)和/或平臺(tái))的功率狀態(tài)在語義上準(zhǔn)確的(例如,多處理器)視圖。另外,將功率狀態(tài)轉(zhuǎn)變表示為功率事務(wù)可允許建模、指定和驗(yàn)證功率管理轉(zhuǎn)變的更有序、語義上準(zhǔn)確的方法。在某些實(shí)施例中,將功率管理轉(zhuǎn)變實(shí)現(xiàn)為事務(wù)性存儲(chǔ)器序列可允許得到裝置、SoC和/或平臺(tái)的功率狀態(tài)在語義上準(zhǔn)確的多處理器視圖。另外,將功率狀態(tài)轉(zhuǎn)變表示為事務(wù)可帶來建模、指定和驗(yàn)證功率(管理)轉(zhuǎn)變的更有序、語義上準(zhǔn)確的方法。在某些實(shí)施例中,將功率轉(zhuǎn)變表示為事務(wù)可以是在硬件、固件和軟件中指定功率序列的有力方式,例如,語義上相關(guān)的表示有助于裝置、SoC和/或平臺(tái)的功率管理驗(yàn)證。
在一個(gè)實(shí)施例中,功率管理設(shè)備和方法可將代碼的區(qū)域(例如,一個(gè)或幾個(gè)線程)宣布為(例如,單個(gè))事務(wù)。事務(wù)可執(zhí)行并且以原子方式提交所有結(jié)果到存儲(chǔ)器(例如,在事務(wù)成功時(shí)),或者中止并取消所有結(jié)果(例如,如果事務(wù)失?。???筛鶕?jù)例如上面討論的原子性、一致性、隔離和耐久性(ACID)屬性執(zhí)行事務(wù)。事務(wù)可安全地并行執(zhí)行,例如,以替換諸如鎖和信號(hào)量的技術(shù)。某些實(shí)施例也可包括性能益處,例如,由于鎖可以是不利的(pessimistic),并且假設(shè)加鎖線程將寫入到數(shù)據(jù),因此,其它線程的進(jìn)展可受阻。在本文中沒有鎖的一個(gè)實(shí)施例中,均訪問共同資源(例如,相同存儲(chǔ)器地址或寄存器)的兩個(gè)事務(wù)可并行繼續(xù),并且如果事務(wù)之一寫入(例如,沖突寫入)到共享資源,回滾(例如,事務(wù)之一或兩者的中止)才可發(fā)生。
功率管理設(shè)備和方法可接收對(duì)功率狀態(tài)轉(zhuǎn)變(例如,指示要轉(zhuǎn)變到哪個(gè)裝置或域和/或新功率級(jí)別)的多個(gè)請(qǐng)求(例如,來自硬件、OS或驅(qū)動(dòng)程序)。在一個(gè)實(shí)施例中,可通過功率管理命令(例如,在處理器上執(zhí)行以完成轉(zhuǎn)變的指令的線程)請(qǐng)求功率狀態(tài)轉(zhuǎn)變。在一個(gè)實(shí)施例中,功率管理命令可從請(qǐng)求方(例如,OS)發(fā)送到要轉(zhuǎn)變的裝置(例如,控制輸入)??蓪⒐β薁顟B(tài)轉(zhuǎn)變宣布為事務(wù),例如,指派為功率事務(wù)的功率管理命令(例如,線程)。因此,可將功率狀態(tài)轉(zhuǎn)變(例如,引起功率狀態(tài)轉(zhuǎn)變的操作)作為(單個(gè))功率事務(wù)來對(duì)待,使得功率管理設(shè)備和方法在操縱(例如,更改功率狀態(tài))控制功率狀態(tài)轉(zhuǎn)變和/或作為功率狀態(tài)轉(zhuǎn)變一部分的數(shù)據(jù)結(jié)構(gòu)(例如,保持在存儲(chǔ)器、寄存器、數(shù)據(jù)輸入等中)時(shí)不發(fā)布鎖。在一個(gè)實(shí)施例中,功率狀態(tài)事務(wù)包括在嘗試對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行任何修改前開始一個(gè)或多個(gè)狀態(tài)轉(zhuǎn)變操作,對(duì)數(shù)據(jù)結(jié)構(gòu)的副本(例如,參考版本)進(jìn)行其更改(例如,在高速緩存中),并且在操作完成時(shí),如果未發(fā)生沖突,則提交事務(wù)。在事務(wù)期間,功率事務(wù)單元(例如,系統(tǒng))可跟蹤(例如,記錄)執(zhí)行了讀取和/或?qū)懭氲哪切┎僮鞯乃袛?shù)據(jù)結(jié)構(gòu)。在提交功率事務(wù)前,功率事務(wù)單元可檢查沒有其它事務(wù)(例如,其操作)對(duì)事務(wù)使用的數(shù)據(jù)結(jié)構(gòu)進(jìn)行任何更改。如果沒有更改,則可提交事務(wù)。如果存在更改,則可中止事務(wù),例如使得所有其更改撤消。在一個(gè)實(shí)施例中,例如可在不同策略(例如,使用一個(gè)或多個(gè)鎖)下重試或取消中止的事務(wù)(例如,其一個(gè)或多個(gè)操作)。因此,對(duì)多個(gè)裝置的功率狀態(tài)轉(zhuǎn)變嘗試可與功率狀態(tài)事務(wù)并行發(fā)生。在一個(gè)實(shí)施例中,裝置和/或域包括功率管理寄存器,以在接收寫入功率管理命令到寄存器中時(shí)引起功率狀態(tài)轉(zhuǎn)變,例如,功率管理命令可以是指示裝置的新功率狀態(tài)的一個(gè)或多個(gè)比特。在一個(gè)實(shí)施例中,軟件(例如,OS)請(qǐng)求功率狀態(tài)轉(zhuǎn)變,例如,在檢測(cè)到裝置(和/或功率域)沒有正在被利用后,它可指示閑置或關(guān)閉該裝置。裝置可包括在處理器外的一個(gè)或多個(gè)組件(例如,外設(shè)),例如,不與處理器一起在管芯上。多個(gè)裝置可包括共享資源,例如,由相同時(shí)鐘控制或在相同功率域中的那些裝置(例如,由供電設(shè)備的相同功率軌供電)。OS可指示或檢測(cè)到將使用哪個(gè)或哪些功率域,以便執(zhí)行功率管理命令(例如,線程)。例如,功率事務(wù)提示(例如,參照下面圖5的“原子”)可包括在代碼中以向OS或硬件指示功率管理命令(例如,請(qǐng)求功率狀態(tài)轉(zhuǎn)變)將要作為事務(wù)對(duì)待。
作為一個(gè)示例,第一裝置(例如,USB集線器)和第二裝置(例如,網(wǎng)絡(luò)適配器)每個(gè)可處在活躍功率狀態(tài),并且功率管理命令可被發(fā)送(例如,從其相應(yīng)驅(qū)動(dòng)程序),以使每個(gè)轉(zhuǎn)變到閑置或關(guān)閉功率狀態(tài)。第一功率管理命令(例如,用于USB集線器)和第二功率管理命令(例如,用于網(wǎng)絡(luò)適配器)可例如由OS發(fā)送,并且由處理器或SoC的功率事務(wù)單元接收。功率事務(wù)單元可例如根據(jù)原子性、一致性、隔離和/或耐久性(ACID)屬性,檢測(cè)到對(duì)于每個(gè)功率管理命令的請(qǐng)求的功率狀態(tài)轉(zhuǎn)變將是功率事務(wù)。功率事務(wù)單元(例如,在硬件、軟件、固件或其組合中)可例如允許功率狀態(tài)轉(zhuǎn)變的并發(fā)(例如,并行)執(zhí)行,但尚未提交它們。即使在那些裝置由共享資源供電時(shí),這也可發(fā)生。例如,可跟蹤通過第一功率命令(例如,線程)和第二功率命令(例如,線程)發(fā)生的任何讀取和/或?qū)懭耄ɡ纾揭粋€(gè)或多個(gè)控制輸入和/或一個(gè)或多個(gè)輸出)。在一個(gè)實(shí)施例中,如果第一功率事務(wù)和第二功率事務(wù)不存在(例如,沖突)更改,則然后可提交它們(例如,使裝置供電成閑置或關(guān)閉功率狀態(tài))。如果在兩個(gè)裝置共享影響兩者的共同功率資源(例如域)的情況下存在沖突更改,例如,一個(gè)裝置閑置,并且另一裝置在關(guān)閉狀態(tài),則可例如根據(jù)沖突解決策略,中止事務(wù)之一或兩者。沖突解決策略的一個(gè)示例是提交寫入資源的第一事務(wù),并且中止第二事務(wù)。沖突解決策略的另一示例是將提交具有最高功率狀態(tài)的事務(wù),并且中止更低功率狀態(tài)事務(wù)。其它沖突解決策略可例如包括但不限于重試(例如,延遲)中止的事務(wù),例如,在提交另一事務(wù)后。在一個(gè)實(shí)施例中,每個(gè)功率事務(wù)(例如,針對(duì)相應(yīng)線程)可繼續(xù)直到檢測(cè)到在并發(fā)執(zhí)行線程之間的沖突為止。本文中的某些實(shí)施例允許沒有反對(duì)(against)并發(fā)執(zhí)行(例如,不提交)多個(gè)功率轉(zhuǎn)變的鎖。
注意的是,本文中的圖沒有描繪電源(例如,電池或非電池)或電源連接。本領(lǐng)域技術(shù)人員將領(lǐng)會(huì)的是,這是為了不模糊圖中的某些細(xì)節(jié)。注意的是,本文中的雙箭頭可不要求雙向通信,例如,它可指示單向通信(例如,向或從該組件或裝置)。在本文中的實(shí)施例中可利用通信路徑的任何或所有組合。
圖1示出根據(jù)本公開內(nèi)容的實(shí)施例的硬件設(shè)備100。在一個(gè)實(shí)施例中,硬件設(shè)備100可以是SoC。所描繪的硬件設(shè)備100包括硬件處理器102。雖然描繪了硬件處理器的某些組件,例如,多級(jí)高速緩存和多個(gè)核,可利用一個(gè)或多個(gè)其它處理器而不脫離例如本文中討論的那些精神的本公開內(nèi)容的精神。所描繪的核A (102A)包括第一級(jí)指令高速緩存(L1I) 104A、第一級(jí)數(shù)據(jù)高速緩存106A和2級(jí)高速緩存(L2) 108A。所描繪的核B (102B)包括第一級(jí)指令高速緩存(L1I) 104B、第一級(jí)數(shù)據(jù)高速緩存(L1D)106B 和2級(jí)高速緩存(L2) 108B。所描繪的核C (102C)包括第一級(jí)指令高速緩存(L1I) 104C、第一級(jí)數(shù)據(jù)高速緩存 (L1D)106C和2級(jí)高速緩存(L2) 108C。所描繪的核D (102D)包括第一級(jí)指令高速緩存(L1I) 104D、第一級(jí)數(shù)據(jù)高速緩存106D (L1D)和2級(jí)高速緩存(L2) 108D。所描繪的硬件核A和B包括共享3級(jí)高速緩存(L3) 110。所描繪的硬件核C和D包括共享3級(jí)高速緩存(L3) 112。所描繪的處理器102包括共享4級(jí)高速緩存(L4) 114。雖然描繪了四個(gè)核,但可利用單個(gè)核或任何多個(gè)處理器核。雖然描繪了四級(jí)高速緩存,但可利用單級(jí)或任何多個(gè)級(jí)的高速緩存。
在一個(gè)實(shí)施例中,每個(gè)核具有其自己的功率域。在一個(gè)實(shí)施例中,多個(gè)核(例如,核A和核B)具有共享功率域。在一個(gè)實(shí)施例中,整個(gè)高速緩存可具有其自己的功率域。例如,用于L3高速緩存110的功率轉(zhuǎn)變可使得用于某些或所有其它高速緩存的功率轉(zhuǎn)變。
可根據(jù)高速緩存相干協(xié)議,利用例如作為高速緩存一部分的高速緩存相干單元,例如,修改(M)、獨(dú)占(E)、共享(S)和無效(I) (MESI)四態(tài)協(xié)議或修改(M)、獨(dú)占(E)、共享(S)、無效(I)和轉(zhuǎn)發(fā)(F) (MESIF)五態(tài)協(xié)議。
在本文中的實(shí)施例中可利用通信路徑的任何或所有組合。例如,處理器102(例如,其核)可例如通過網(wǎng)絡(luò)(描繪為環(huán)形網(wǎng)絡(luò)116)與其它裝置進(jìn)行通信。
根據(jù)本公開內(nèi)容的某些實(shí)施例,可包括一個(gè)或多個(gè)(例如,功率)事務(wù)單元。每個(gè)核可包括(例如,功率)事務(wù)單元,例如在其相應(yīng)核中的一個(gè)或多個(gè)(功率)事務(wù)單元120A、120B、120C和120D。另外地或備選地,處理器或SoC可包括單獨(dú)的(例如,功率)事務(wù)單元。所描繪的硬件設(shè)備包括功率事務(wù)單元120,例如用于存儲(chǔ)邏輯以執(zhí)行本文中的公開內(nèi)容。雖然描繪了某些其它組件,但這些是示例,并且可利用其它組件和/或某些所描繪的組件可在硬件設(shè)備中不存在。所描繪的組件包括可將顯示信號(hào)發(fā)送到顯示器126的圖形單元124(例如,可以是圖形處理器)、存儲(chǔ)裝置128(例如,可以是在管芯上或在管芯外的數(shù)據(jù)存儲(chǔ)裝置)、通用異步接收器和傳送器(UART) 130、低功率子系統(tǒng)(LPSS) 132以及通用串行總線(USB) 134。圖形單元124可以是硬件處理器102的一部分。
可包括功率管理單元122,例如以管理到裝置的功率流。功率事務(wù)單元可包括在功率管理單元中。在一個(gè)實(shí)施例中,每個(gè)裝置(例如,其組件)可包括其自己的功率域。在一個(gè)實(shí)施例中,多個(gè)裝置或一個(gè)或多個(gè)裝置的組件共享單個(gè)功率域。
作為一個(gè)示例,第一裝置(例如,USB 134)和第二裝置(例如,UART 130)每個(gè)可處在活躍(active)功率狀態(tài),并且功率管理命令可被發(fā)送(例如,從其相應(yīng)驅(qū)動(dòng)程序),以使每個(gè)裝置轉(zhuǎn)變到關(guān)閉(或閑置)功率狀態(tài)。第一功率管理命令(例如,用于USB 134)和第二功率管理命令(例如,用于UART 130)可例如由OS發(fā)送,并且由功率事務(wù)單元(例如,事務(wù)單元120)接收。功率事務(wù)單元可例如根據(jù)原子性、一致性、隔離和/或耐久性(ACID)屬性,檢測(cè)到(例如,從來自O(shè)S的指示)用于每個(gè)功率管理命令的請(qǐng)求的功率狀態(tài)轉(zhuǎn)變將是功率事務(wù)。功率事務(wù)單元(例如,在硬件、軟件、固件或其組合中)可例如允許功率狀態(tài)轉(zhuǎn)變的并發(fā)(例如,并行)執(zhí)行,但尚未提交它們。即使在那些裝置由共享資源(例如,是相同功率域的成員)供電時(shí),這種情況也可發(fā)生。例如,可跟蹤通過第一功率命令(例如,線程)和第二功率命令(例如,線程)發(fā)生的任何讀取和/或?qū)懭耄ɡ?,到一個(gè)或多個(gè)控制輸入和/或一個(gè)或多個(gè)輸出)??尚纬梢薷牡臄?shù)據(jù)的副本(例如,參考版本),并且可將其存儲(chǔ)在高速緩存(例如,處理器的高速緩存或事務(wù)單元120的單獨(dú)高速緩存)中。在一個(gè)實(shí)施例中,如果第一功率事務(wù)和第二功率事務(wù)不存在沖突(例如,沖突更改),則然后可提交它們(例如,使USB 134和UART 130裝置供電成關(guān)閉(或閑置)功率狀態(tài))。如果在兩個(gè)裝置共享影響兩者的共同功率資源(例如域)的情況下存在沖突(例如,沖突更改),例如,一個(gè)裝置將閑置,并且另一裝置將在關(guān)閉狀態(tài),則可例如根據(jù)沖突解決策略,中止事務(wù)之一或兩者。
在另一個(gè)實(shí)施例中,單個(gè)裝置可將其功率轉(zhuǎn)變宣布為功率事務(wù)。例如,在功率狀態(tài)轉(zhuǎn)變(例如,從活躍狀態(tài)到關(guān)閉或閑置)的過程中的裝置(例如,USB 134)可接收中斷(例如,外設(shè)已插入U(xiǎn)SB 134中)。功率事務(wù)單元可檢測(cè)到此,并且然后例如中止(例如,不提交)在處理的(in-flight)功率狀態(tài)轉(zhuǎn)變,并且轉(zhuǎn)而返回到活躍狀態(tài)。
轉(zhuǎn)到圖2和3,圖2用于描述實(shí)施例,其中,集成電路(例如,其處理器核)不包括對(duì)硬件存儲(chǔ)器事務(wù)(例如,事務(wù)性存儲(chǔ)器)的支持,并且圖3用于描述實(shí)施例,其中,集成電路(例如,其處理器核)確實(shí)包括對(duì)硬件存儲(chǔ)器事務(wù)(例如,事務(wù)性存儲(chǔ)器)的支持。
圖2示出根據(jù)本公開內(nèi)容的實(shí)施例的集成電路200。處理器核0-N每個(gè)描繪為包括(例如,專用)指令高速緩存(LC)和(例如,專用)數(shù)據(jù)高速緩存(DC)。此外,集成電路可包括高速緩存相干性控制器236以保持在(例如,數(shù)據(jù))高速緩存中的(例如,全局)高速緩存相干性。雖然某些裝置和組件在圖2中描繪,但這些是可選的。例如,雖然描繪了“北復(fù)合體”功率域和“南復(fù)合體”功率域,但可利用任何功率域??偩€216可用于通信。
高速緩存相干性控制器236和討論的其它修改可允許事務(wù)性功率管理。集成電路200(例如,SoC)包括功率管理單元(PUNIT) 240和功率管理控制器(PMC) 242,例如其中的每個(gè)或兩者可以是離散處理器核。PMC 242可例如響應(yīng)于來自PUNIT 240的功率管理命令,控制到域(例如,南復(fù)合體)的功率。
在不支持硬件存儲(chǔ)器事務(wù)(例如,事務(wù)性存儲(chǔ)器)的系統(tǒng)中,硬件功率事務(wù)例如可如下實(shí)現(xiàn)。在高速緩存系統(tǒng)中可包括針對(duì)每個(gè)高速緩存條目(例如,高速緩存行)的事務(wù)字段(例如,比特)??砂〝?shù)據(jù)結(jié)構(gòu)(例如,用于每個(gè)PUNIT和PMC)以跟蹤事務(wù)歷史和/或任何沖突??稍L問數(shù)據(jù)結(jié)構(gòu)以測(cè)試(例如,確定)元素(例如,裝置)是否為集合(例如,共享功率域或其它共享資源)的成員。在所描繪的實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)是用于PUNIT 240的Bloom濾波器240A和用于PMC 242的Bloom濾波器242A。Bloom濾波器可以是(例如,空間有效的)概率數(shù)據(jù)結(jié)構(gòu),其用于測(cè)試元素(例如,裝置)是否為集合(例如,共享功率域或其它共享資源)的成員。在一個(gè)實(shí)施例中,假正匹配可以是可能的,但假負(fù)是不可能的,例如,對(duì)元素的其查詢返回或“元素可能在集合中”或“元素肯定不在集合中”。PUNIT和PMC可利用數(shù)據(jù)結(jié)構(gòu)(例如,Bloom濾波器)提供對(duì)沖突解決和排序(ordering)提交的支持??蓪?shù)據(jù)結(jié)構(gòu)(例如,Bloom濾波器)作為(例如,存儲(chǔ)器映射的)寄存器(例如,寄存器244和246)訪問??稍L問PUNIT和PMC的功率管理寄存器(未描繪)以引起功率轉(zhuǎn)變。數(shù)據(jù)結(jié)構(gòu)(例如,寄存器244和246)例如可經(jīng)例如要由軟件使用來定義事務(wù)邊界,配置如何處理沖突(和任何重試)等的事務(wù)應(yīng)用編程接口(API)被顯露到軟件中。本文中的某些實(shí)施例因此可提供事務(wù)性功率管理的可擴(kuò)展硬件和軟件實(shí)現(xiàn)(例如,對(duì)于要作為事務(wù)對(duì)待的功率指令的序列)。將功率狀態(tài)轉(zhuǎn)變表示為事務(wù)可帶來建模、指定和驗(yàn)證功率管理轉(zhuǎn)變的更有序、語義上準(zhǔn)確的方法。
圖3示出根據(jù)本公開內(nèi)容的實(shí)施例的集成電路300(例如,SoC)。在此示例中,(例如,所有)處理器核(例如,包括功率管理控制器)包括對(duì)硬件存儲(chǔ)器事務(wù)(例如,事務(wù)性存儲(chǔ)器)的支持,并且因此可允許事務(wù)性功率管理。集成電路的組件可具有跨所有組件(例如,所有處理器核,包括功率管理單元(PUNIT) 340和功率管理控制器(PMC) 342)的(例如,存儲(chǔ)器和功率)事務(wù)的(例如,全局地)同步視圖。例如,系統(tǒng)(例如,SoC)可包括存儲(chǔ)器事務(wù)單元(例如,引擎)和/或功率事務(wù)單元(例如,引擎)??刹焕脭?shù)據(jù)結(jié)構(gòu)(例如,Bloom濾波器)。編譯器可包括對(duì)允許功率狀態(tài)轉(zhuǎn)變的事務(wù)的支持??衫镁幾g器中對(duì)存儲(chǔ)器事務(wù)的支持以允許事務(wù)性功率管理。裝置驅(qū)動(dòng)程序可注釋用于功率管理事務(wù)的其代碼。此框架可幫助OS和其它組件更具跨多核SoC的可擴(kuò)展性和可移植性,例如,不必須提供加鎖、同步等的點(diǎn)解決方案??偩€316可用于通信。對(duì)于圖2和3,針對(duì)北復(fù)合體和南復(fù)合體中的每個(gè)列示的組件和裝置只是示例。
在一個(gè)實(shí)施例中,系統(tǒng)(例如,具有多個(gè)核)可通過具有保證用于標(biāo)記為事務(wù)的代碼的序列(例如跨所有處理器核(和存儲(chǔ)器))的ACID語義的硬件,來支持用于該代碼的序列的硬件事務(wù)性存儲(chǔ)器。這通常可被稱為跨所有核的事務(wù)的全局同步視圖,例如以便在一個(gè)核正執(zhí)行標(biāo)記為事務(wù)性的代碼流(例如,線程)時(shí),如果該代碼正訪問一些數(shù)據(jù)(例如,在存儲(chǔ)器中),則存在內(nèi)置硬件支持以確保維持該段代碼(和存儲(chǔ)器)的事務(wù)性語義(例如跨所有核)。在此類系統(tǒng)的一個(gè)示例中,(例如,所有)主機(jī)驅(qū)動(dòng)程序可在處理器(例如,IA)核上運(yùn)行(例如,一般針對(duì)操作訪問并且使用主存儲(chǔ)器),并且嘗試進(jìn)行事務(wù)性功率管理(例如,用于標(biāo)記為事務(wù)性的功率管理命令(代碼))的任何主機(jī)驅(qū)動(dòng)程序的集合例如在那些命令由一個(gè)或多個(gè)核和/或一個(gè)或多個(gè)功率管理單元(例如,具有存儲(chǔ)器訪問的控制器)執(zhí)行時(shí),保證保持事務(wù)性語義。
支持存儲(chǔ)器事務(wù)的系統(tǒng)的某些實(shí)施例可用于支持功率事務(wù),例如,在功率管理命令是讀取和/或?qū)懭氪鎯?chǔ)器(例如,寄存器)的情況下。例如,ISA的功率管理指令可具有指示它是事務(wù)的其字段。
本公開內(nèi)容的某些實(shí)施例包括對(duì)以下的一個(gè)或更多個(gè)的硬件和/或軟件(例如,運(yùn)行時(shí)間)支持:例如在移動(dòng)裝置中的將特定功率管理命令(例如,序列)實(shí)現(xiàn)為事務(wù)(例如,序列)的處理器核及(例如,微)控制器,像PUNIT、PMC和無線電端口控制器單元(RPCU)。軟件功率事務(wù)可提供用于將功率管理命令封裝為事務(wù)的抽象概念,例如,這可通過編譯器中的功率編譯指示實(shí)現(xiàn)以允許軟件注釋軟件(例如,OS和/或驅(qū)動(dòng)程序)代碼中的功率管理序列。編譯器翻譯可將軟件提供的功率提示(例如,圖5中的“原子”)轉(zhuǎn)換成對(duì)針對(duì)硬件事務(wù)性存儲(chǔ)器的基礎(chǔ)體系結(jié)構(gòu)支持特定的事務(wù)性存儲(chǔ)器指令序列。以上所述可擴(kuò)展成也具有(例如,微)控制器支持硬件事務(wù)性存儲(chǔ)器,例如,用于功率管理的單獨(dú)核或處理器。處理器中的硬件(功率)事務(wù)支持可提供裝置和平臺(tái)和/或SoC的功率狀態(tài)的統(tǒng)一視圖。此框架可允許OS和其它組件更具跨多個(gè)核裝置(例如,SoC)的可擴(kuò)展性和可移植性,例如,不必須提供加鎖、同步等的點(diǎn)解決方案。例如,在圖5中所示的示例中,線程T1和T2可通過繞原子塊封裝線程,來執(zhí)行對(duì)共享功率資源601中共享功率狀態(tài)寄存器的訪問。在事務(wù)執(zhí)行完成并且提交時(shí),其影響可對(duì)其它事務(wù)可見。否則,事務(wù)可被中止,并且沒有其影響可對(duì)其它事務(wù)可見。
本文中的某些實(shí)施例包括指示將訪問共享對(duì)象的代碼的(例如,標(biāo)記)部分為例如將以原子方式執(zhí)行的事務(wù)。
圖4示出根據(jù)本公開內(nèi)容的實(shí)施例的用于沒有功率事務(wù)的系統(tǒng)的功率管理代碼400。圖4示出在沒有功率事務(wù)的情況下,系統(tǒng)可延遲第二功率轉(zhuǎn)變,直至第一功率轉(zhuǎn)變已完成為止。在針對(duì)沒有功率事務(wù)的功率狀態(tài)轉(zhuǎn)變的一個(gè)實(shí)施例中,內(nèi)核或裝置驅(qū)動(dòng)程序可例如基于對(duì)發(fā)布功率管理命令的平臺(tái)支持,向單個(gè)裝置或多個(gè)裝置發(fā)布功率管理命令(例如,功率狀態(tài)轉(zhuǎn)變請(qǐng)求)。然而,多個(gè)鎖和/或同步原語(primitive)可用于跨OS、裝置驅(qū)動(dòng)程序、固件和硬件配合(orchestrate)此復(fù)雜狀態(tài)機(jī),導(dǎo)致錯(cuò)誤(例如,故障)、競爭狀況、鎖定/饑餓(starvation)、非可移植代碼及平臺(tái)特定解決方案。此外,例如由于沒有功率事務(wù)的掛起和恢復(fù)的高遲滯,執(zhí)行沒有功率事務(wù)的功率狀態(tài)轉(zhuǎn)變的時(shí)間可10倍或更多于使用功率事務(wù)時(shí)的時(shí)間量。
圖5示出根據(jù)本公開內(nèi)容的實(shí)施例的用于具有功率事務(wù)的系統(tǒng)的功率管理代碼500。所描繪的代碼包括例如根據(jù)原子性、一致性、隔離和/或耐久性(ACID)屬性的一個(gè)或更多個(gè)屬性,宣布(例如,通過“原子”)功率管理命令(例如,線程T1和T2兩者)將作為事務(wù)對(duì)待。在一個(gè)實(shí)施例中,計(jì)算系統(tǒng)(例如,編譯器)將那些線程作為可并發(fā)執(zhí)行的事務(wù)對(duì)待,例如,除非存在有沖突,否則提交兩者。
圖6示出根據(jù)本公開內(nèi)容的實(shí)施例的具有用于T1和T2的原子功率事務(wù)和不具有用于T1和T2的原子功率事務(wù)的計(jì)時(shí)示意圖600。圖6示出與由于它們不是事務(wù)而連續(xù)完成(例如,至少t1 + t2)的功率管理命令(例如,非原子T1和T2)相比,對(duì)于原子功率事務(wù),兩個(gè)線程可并發(fā)執(zhí)行,例如,使用時(shí)間t1和t2分別執(zhí)行(并且如果通過其對(duì)用于共享功率資源601的一個(gè)或多個(gè)功率控制寄存器的訪問沒有引起沖突,則提交)。在一個(gè)實(shí)施例中,每個(gè)功率管理命令(例如,線程)在單獨(dú)核上執(zhí)行。在一個(gè)實(shí)施例中,核可用作功率管理單元。
圖7示出根據(jù)本公開內(nèi)容的實(shí)施例的流程圖700。所描繪的流程圖700包括:提供包括硬件處理器的硬件設(shè)備的多個(gè)功率域,以響應(yīng)于用于每個(gè)功率域的功率管理命令而轉(zhuǎn)變到多個(gè)功率狀態(tài)之一,702;指派第一功率管理命令為第一功率事務(wù),以及第二功率管理命令為第二功率事務(wù)以便并發(fā)執(zhí)行,704;在第一功率事務(wù)與第二功率事務(wù)之間沒有沖突時(shí),執(zhí)行第一功率事務(wù)和第二功率事務(wù)的提交,706;以及在第一功率事務(wù)與第二功率事務(wù)之間存在沖突時(shí),執(zhí)行第一功率事務(wù)的中止和第二功率事務(wù)的提交,708。
圖8示出根據(jù)本公開內(nèi)容的實(shí)施例的流程圖800。所描繪的流程包括例如從軟件(例如,OS)到固件,一直到硬件的示例功率事務(wù)。在一個(gè)實(shí)施例中,圖形的流程圖800可表示圖1、2和/或3中的電路。PMIC可表示功率管理集成電路。
在一個(gè)實(shí)施例中,硬件設(shè)備包括:具有核的硬件處理器;多個(gè)功率域,以響應(yīng)于用于每個(gè)功率域的功率管理命令而轉(zhuǎn)變到多個(gè)功率狀態(tài)之一;以及功率事務(wù)單元,以指派第一功率管理命令為第一功率事務(wù),以及第二功率管理命令為第二功率事務(wù)以便并發(fā)執(zhí)行,在第一功率事務(wù)與第二功率事務(wù)之間沒有沖突時(shí),執(zhí)行第一功率事務(wù)和第二功率事務(wù)的提交,以及在第一功率事務(wù)與第二功率事務(wù)之間存在沖突時(shí),執(zhí)行第一功率事務(wù)的中止和第二功率事務(wù)的提交。第一功率事務(wù)和第二功率事務(wù)每個(gè)可包括多個(gè)指令。硬件設(shè)備可還包括多個(gè)功率狀態(tài)寄存器以接收用于每個(gè)域的功率管理命令。沖突可以是第一功率事務(wù)寫入到第二功率事務(wù)已寫入的功率狀態(tài)寄存器。功率事務(wù)單元可不發(fā)布鎖。沖突可以是第一功率事務(wù)和第二功率事務(wù)寫入用于共享功率域的沖突功率管理命令。在存在沖突時(shí),響應(yīng)于第二功率事務(wù)的執(zhí)行的功率域的轉(zhuǎn)變可只在第二功率事務(wù)提交后對(duì)其它事務(wù)可見。硬件設(shè)備可還包括存儲(chǔ)器事務(wù)單元,以在核上第一線程和在硬件處理器的第二核上第二線程的并發(fā)執(zhí)行后,除非第一線程和第二線程將修改同一存儲(chǔ)器地址,否則執(zhí)行第一線程和第二線程的提交。
在另一實(shí)施例中,方法包括:提供包括硬件處理器的硬件設(shè)備的多個(gè)功率域,以響于應(yīng)用于每個(gè)功率域的功率管理命令而轉(zhuǎn)變到多個(gè)功率狀態(tài)之一;指派第一功率管理命令為第一功率事務(wù),以及第二功率管理命令為第二功率事務(wù)以便并發(fā)執(zhí)行;在第一功率事務(wù)與第二功率事務(wù)之間沒有沖突時(shí),執(zhí)行第一功率事務(wù)和第二功率事務(wù)的提交;以及在第一功率事務(wù)與第二功率事務(wù)之間存在有沖突時(shí),執(zhí)行第一功率事務(wù)的中止和第二功率事務(wù)的提交。第一功率事務(wù)和第二功率事務(wù)每個(gè)可包括多個(gè)指令。方法可還包括在功率狀態(tài)寄存器接收用于每個(gè)域的功率管理命令。沖突可以是第一功率事務(wù)寫入到第二功率事務(wù)已寫入的功率狀態(tài)寄存器。方法可還包括不發(fā)布鎖。沖突可以是第一功率事務(wù)和第二功率事務(wù)寫入用于共享功率域的沖突功率管理命令。在存在有沖突時(shí),響應(yīng)于第二功率事務(wù)的執(zhí)行的功率域的轉(zhuǎn)變可只在執(zhí)行第二功率事務(wù)的提交后對(duì)其它事務(wù)可見。方法可還包括在硬件處理器上第一線程和第二線程的并發(fā)執(zhí)行后,除非第一線程和第二線程將修改同一存儲(chǔ)器地址,否則執(zhí)行第一線程和第二線程的提交。
在又一實(shí)施例中,一種非暫時(shí)性機(jī)器可讀存儲(chǔ)介質(zhì)具有存儲(chǔ)的程序代碼,程序代碼在由機(jī)器處理時(shí),使得方法被執(zhí)行,方法包括:提供包括硬件處理器的硬件設(shè)備的多個(gè)功率域,以響應(yīng)于用于每個(gè)功率域的功率管理命令而轉(zhuǎn)變到多個(gè)功率狀態(tài)之一;指派第一功率管理命令為第一功率事務(wù)以及第二功率管理命令為第二功率事務(wù)以便并發(fā)執(zhí)行;在第一功率事務(wù)與第二功率事務(wù)之間沒有沖突時(shí),執(zhí)行第一功率事務(wù)和第二功率事務(wù)的提交;以及在第一功率事務(wù)與第二功率事務(wù)之間存在有沖突時(shí),執(zhí)行第一功率事務(wù)的中止和第二功率事務(wù)的提交。第一功率事務(wù)和第二功率事務(wù)每個(gè)可包括多個(gè)指令。方法可還包括在功率狀態(tài)寄存器接收用于每個(gè)域的功率管理命令。沖突可以是第一功率事務(wù)寫入到第二功率事務(wù)已寫入的功率狀態(tài)寄存器。方法可還包括不發(fā)布鎖。沖突可以是第一功率事務(wù)和第二功率事務(wù)寫入用于共享功率域的沖突功率管理命令。在存在沖突時(shí),響應(yīng)于第二功率事務(wù)的執(zhí)行的功率域的轉(zhuǎn)變可只在執(zhí)行第二功率事務(wù)的提交后對(duì)其它事務(wù)可見。方法可還包括在硬件處理器上第一線程和第二線程的并發(fā)執(zhí)行后,除非第一線程和第二線程將修改同一存儲(chǔ)器地址,否則執(zhí)行第一線程和第二線程的提交。
在另一實(shí)施例中,硬件設(shè)備包括:具有核的硬件處理器;多個(gè)功率域,以響應(yīng)于用于每個(gè)功率域的功率管理命令而轉(zhuǎn)變到多個(gè)功率狀態(tài)之一;以及執(zhí)行以下操作的部件:指派第一功率管理命令為第一功率事務(wù),以及第二功率管理命令為第二功率事務(wù)以便并發(fā)執(zhí)行,在第一功率事務(wù)與第二功率事務(wù)之間沒有沖突時(shí),執(zhí)行第一功率事務(wù)和第二功率事務(wù)的提交,以及在第一功率事務(wù)與第二功率事務(wù)之間存在有沖突時(shí),執(zhí)行第一功率事務(wù)的中止和第二功率事務(wù)的提交。
在又一實(shí)施例中,設(shè)備包括存儲(chǔ)代碼的數(shù)據(jù)存儲(chǔ)裝置,代碼在由硬件處理器執(zhí)行時(shí),使得硬件處理器執(zhí)行本文中公開的任何方法。設(shè)備可如在具體實(shí)施方式中描述的一樣。方法可如在具體實(shí)施方式中描述的一樣。
指令集可包括一個(gè)或更多個(gè)指令格式。給定的指令格式可定義各種字段(例如,比特的數(shù)量、比特的位置)以除其它之外,指定要執(zhí)行的操作(例如,操作碼)和一個(gè)或多個(gè)操作數(shù)(將對(duì)所述操作數(shù)執(zhí)行操作)和/或其它一個(gè)或多個(gè)數(shù)據(jù)字段(例如,掩碼)。一些指令格式還通過指令模板(或子格式)的定義進(jìn)一步進(jìn)行分解。例如,可將給定指令格式的指令模板定義成具有指令格式的字段的不同子集(包括的字段一般為相同順序,但由于包括有更少的字段,因此,至少一些字段具有不同比特位置),和/或定義成具有以不同方式解釋的給定字段。因此,ISA的每個(gè)指令使用給定指令格式(并且,如果已定義,則在該指令格式的指令模板的一個(gè)給定模板中)表述,并且包括用于指定操作和操作數(shù)的字段。例如,示范ADD指令具有特定操作碼和指令格式,指令格式包括指定該操作碼的操作碼字段和選擇操作數(shù)(源1/目的地和源2)的操作數(shù)字段;并且指令流中此ADD指令的出現(xiàn)將在選擇特定操作數(shù)的操作數(shù)字段中具有特定內(nèi)容。稱為高級(jí)向量擴(kuò)展(AVX)(AVX1和AVX2)并且使用向量擴(kuò)展(VEX)編碼方案的SIMD擴(kuò)展的集合已發(fā)行和/或公布(例如,參閱2015年4月的Intel? 64和IA-32體系結(jié)構(gòu)軟件開發(fā)員的手冊(cè);并且參閱2014年10月的Intel?體系結(jié)構(gòu)指令集擴(kuò)展編程參考)。
示范核體系結(jié)構(gòu)、處理器和計(jì)算機(jī)體系結(jié)構(gòu)
處理器核可以以不同方式,為不同目的并且在不同處理器中實(shí)現(xiàn)。例如,此類核的實(shí)現(xiàn)可包括:1)預(yù)期用于通用計(jì)算的通用有序核;2)預(yù)期用于通用計(jì)算的高性能通用無序核;3)預(yù)期主要用于圖形和/或科學(xué)(吞吐量)計(jì)算的專用核。不同處理器的實(shí)現(xiàn)可包括:1) CPU,包括預(yù)期用于通用計(jì)算的一個(gè)或更多個(gè)通用有序核和/或預(yù)期用于通用計(jì)算的一個(gè)或更多個(gè)通用無序核;以及2)協(xié)處理器,包括預(yù)期主要用于圖形和/或科學(xué)(吞吐量)的一個(gè)或更多個(gè)專用核。此類不同處理器導(dǎo)致不同計(jì)算機(jī)系統(tǒng)體系結(jié)構(gòu),其可包括:1)在與CPU分開的芯片上的協(xié)處理器;2)與CPU在同一封裝中的單獨(dú)管芯上的協(xié)處理器;3)與CPU在相同管芯上的協(xié)處理器(在此情況下,此類協(xié)處理器有時(shí)稱為專用邏輯,如集成圖形和/或科學(xué)(吞吐量)邏輯,或者稱為專用核);以及4)片上系統(tǒng),可在相同的管芯上包括所描述的CPU(有時(shí)稱為一個(gè)或多個(gè)應(yīng)用核或一個(gè)或多個(gè)應(yīng)用處理器),上述協(xié)處理器和另外的功能性。緊跟著示范處理器和計(jì)算機(jī)體系結(jié)構(gòu)的描述,接下來描述示范核體系結(jié)構(gòu)。
示范核體系結(jié)構(gòu)
有序和無序核框圖
圖9A是根據(jù)本公開內(nèi)容的實(shí)施例的示出示范有序流水線和示范寄存器重命名、無序發(fā)布/執(zhí)行流水線兩者的框圖。圖9B是根據(jù)本公開內(nèi)容的實(shí)施例的示出有序體系結(jié)構(gòu)核的示范實(shí)施例和要包括在處理器中的示范寄存器重命名、無序發(fā)布/執(zhí)行體系結(jié)構(gòu)核的框圖。在圖9A-B中的實(shí)線框示出有序流水線和有序核,而可選添加的虛線框示出寄存器重命名、無序發(fā)布/執(zhí)行流水線和核。假定有序方面是無序方面的子集,將描述無序方面。
在圖9A中,處理器流水線900包括獲取階段902、長度解碼階段904、解碼階段906、分配階段908、重命名階段910、調(diào)度(也稱為分派或發(fā)布)階段912、寄存器讀取/存儲(chǔ)器讀取階段914、執(zhí)行階段916、回寫/存儲(chǔ)器寫入階段918、異常處理階段922及提交階段924。
圖9B顯示處理器核990,包括耦合到執(zhí)行引擎單元950的前端單元930,并且兩者均耦合到存儲(chǔ)器單元970。核990可以是精簡指令集計(jì)算(RISC)核、復(fù)雜指令集計(jì)算(CISC)核、超長指令字(VLIM)核或混合或備選核類型。作為又一選擇,核990可以是專用核,如網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計(jì)算圖形處理單元(GPGPU)核、圖形核或諸如此類。
前端單元930包括耦合到指令高速緩存單元934的分支預(yù)測(cè)單元932,單元934耦合到指令翻譯后備緩沖器(TLB) 936,其耦合到指令獲取單元938,其耦合到解碼單元940。解碼單元940(或解碼器或解碼器單元)可將指令(例如,宏指令)解碼,并且生成作為輸出的一個(gè)或更多個(gè)微操作、微代碼輸入點(diǎn)、微指令、其它指令或其它控制信號(hào),它們從原指令解碼或者它們以其它方式反映原指令或者從原指令得到。解碼單元940可使用各種不同機(jī)制實(shí)現(xiàn)。適合機(jī)制的示例包括但不限于查表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲(chǔ)器(ROM)等。在一個(gè)實(shí)施例中,核990包括存儲(chǔ)用于某些宏指令的微代碼的微代碼ROM或其它介質(zhì)(例如,在解碼單元940中或者以其它方式在前端單元930內(nèi))。解碼單元940耦合到執(zhí)行引擎單元950中的重命名/分配器單元952。
執(zhí)行引擎單元950包括耦合到引退單元954和一個(gè)或更多個(gè)調(diào)度器單元(一個(gè)或多個(gè))956的集合的重命名/分配器單元952。一個(gè)或多個(gè)調(diào)度器單元956表示任何數(shù)量的不同調(diào)度器,包括預(yù)留站、中央指令窗口等。一個(gè)或多個(gè)調(diào)度器單元956耦合到一個(gè)或多個(gè)物理寄存器文件單元958。一個(gè)或多個(gè)物理寄存器文件單元958中的每個(gè)表示一個(gè)或更多個(gè)物理寄存器文件,這些文件中的不同文件存儲(chǔ)一個(gè)或更多個(gè)不同數(shù)據(jù)類型,如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、壓縮整數(shù)、壓縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)物理寄存器文件單元958包括向量寄存器單元、寫掩碼(write mask)寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可提供體系結(jié)構(gòu)向量寄存器、向量掩碼寄存器和通用寄存器。一個(gè)或多個(gè)物理寄存器文件單元(一個(gè)或多個(gè))958由引退單元954重疊以示出其中可實(shí)現(xiàn)寄存器重命名和無序執(zhí)行的各種方式(例如,使用一個(gè)或多個(gè)重排序緩沖器和一個(gè)或多個(gè)引退寄存器文件;使用一個(gè)或多個(gè)將來文件、一個(gè)或多個(gè)歷史緩沖器和一個(gè)或多個(gè)引退寄存器文件;使用寄存器映射和寄存器池等)。引退單元954和一個(gè)或多個(gè)物理寄存器文件單元(一個(gè)或多個(gè))958耦合到一個(gè)或多個(gè)執(zhí)行集群960。一個(gè)或多個(gè)執(zhí)行集群960包括有一個(gè)或更多個(gè)執(zhí)行單元962的集合和有一個(gè)或更多個(gè)存儲(chǔ)器訪問單元964的集合。執(zhí)行單元962可執(zhí)行各種操作(例如,移位、加法、減法、乘法),并且對(duì)各種類型的數(shù)據(jù)執(zhí)行(例如,標(biāo)量浮點(diǎn)、壓縮整數(shù)、壓縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn))。雖然一些實(shí)施例可包括專用于特定功能或功能的集合的多個(gè)執(zhí)行單元,但其它實(shí)施例可只包括全部執(zhí)行所有功能的多個(gè)執(zhí)行單元或一個(gè)執(zhí)行單元。一個(gè)或多個(gè)調(diào)度器單元956、一個(gè)或多個(gè)物理寄存器文件單元(一個(gè)或多個(gè))958和一個(gè)或多個(gè)執(zhí)行集群960顯示為可能是復(fù)數(shù),這是因?yàn)槟承?shí)施例創(chuàng)建用于某些類型的數(shù)據(jù)/操作的單獨(dú)的流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/壓縮整數(shù)/壓縮浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線和/或存儲(chǔ)器訪問流水線,每個(gè)具有其自己的調(diào)度器單元、一個(gè)或多個(gè)物理寄存器文件單元和/或執(zhí)行集群 - 并且在單獨(dú)的存儲(chǔ)器訪問流水線的情況下,實(shí)現(xiàn)了其中僅此流水線的執(zhí)行集群具有一個(gè)或多個(gè)存儲(chǔ)器訪問單元964的某些實(shí)施例)。也應(yīng)理解的是,在使用單獨(dú)流水線的情況下,一個(gè)或更多個(gè)這些流水線可以是無序發(fā)布/執(zhí)行,并且其余的流水線是有序的。
存儲(chǔ)器訪問單元964的集合耦合到存儲(chǔ)器單元970,其包括耦合到數(shù)據(jù)高速緩存單元974的數(shù)據(jù)TLB單元972,數(shù)據(jù)高速緩存單元974耦合到2級(jí)(L2)高速緩存單元976。在一個(gè)示范實(shí)施例中,存儲(chǔ)器訪問單元964可包括負(fù)載單元、存儲(chǔ)地址單元和存儲(chǔ)數(shù)據(jù)單元,其中的每個(gè)耦合到存儲(chǔ)器單元970中的數(shù)據(jù)TLB單元972。指令高速緩存單元934還耦合到存儲(chǔ)器單元970中的2級(jí)(L2)高速緩存單元976。L2高速緩存單元976耦合到一個(gè)或更多個(gè)其它級(jí)的高速緩存,并且最終耦合到主存儲(chǔ)器。
通過示例,示范寄存器重命名、無序發(fā)布/執(zhí)行核體系結(jié)構(gòu)可如下實(shí)現(xiàn)流水線900:1)指令獲取938執(zhí)行獲取階段902和長度解碼階段904;2)解碼單元940執(zhí)行解碼階段906;3)重命名/分配器單元952執(zhí)行分配階段908和重命名階段910;4)一個(gè)或多個(gè)調(diào)度器單元956執(zhí)行調(diào)度階段912;5)一個(gè)或多個(gè)物理寄存器文件單元(一個(gè)或多個(gè))958和存儲(chǔ)器單元970執(zhí)行寄存器讀取/存儲(chǔ)器讀取階段914;執(zhí)行集群960執(zhí)行執(zhí)行階段916;6)存儲(chǔ)器單元970和一個(gè)或多個(gè)物理寄存器文件單元(一個(gè)或多個(gè))958執(zhí)行回寫/存儲(chǔ)器寫入階段918;7)各種單元可涉及異常處理階段922;以及8)引退單元954和一個(gè)或多個(gè)物理寄存器文件單元(一個(gè)或多個(gè))958執(zhí)行提交階段924。
核990可支持一個(gè)或更多個(gè)指令集(例如,x86指令集(更新版本已添加一些擴(kuò)展)、加利福尼亞州Sunnyvale的MIPS Technologies, 的MIPS指令集、加利福尼亞州Sunnyvale的ARM Holdings的ARM指令集(具有諸如NEON的可選另外擴(kuò)展)),包括本文中描述的一個(gè)或多個(gè)指令。在一個(gè)實(shí)施例中,核990包括支持壓縮數(shù)據(jù)指令集擴(kuò)展(例如,AVX1、AVX2)的邏輯,由此允許使用壓縮數(shù)據(jù)執(zhí)行由許多多媒體應(yīng)用使用的操作。
應(yīng)理解的是,核可支持多線程(執(zhí)行兩個(gè)或更多個(gè)并行的操作或線程的集合),并且可以以多種方式進(jìn)行此,包括時(shí)間片多線程、同時(shí)多線程(其中,單個(gè)物理核提供用于物理核正同時(shí)進(jìn)行多線程的每個(gè)線程的邏輯核)或其組合(例如,如在Intel?超線程技術(shù)中的時(shí)間片獲取和解碼及之后的同時(shí)多線程)。
雖然在無序執(zhí)行的上下文中描述了寄存器重命名,但應(yīng)理解的是,可在有序體系結(jié)構(gòu)中使用寄存器重命名。雖然處理器的所示出的實(shí)施例也包括單獨(dú)的指令和數(shù)據(jù)高速緩存單元934/974及共享L2高速緩存單元976,但備選的實(shí)施例可具有諸如,例如1級(jí)(L1)內(nèi)部高速緩存的用于指令和數(shù)據(jù)兩者的單個(gè)內(nèi)部高速緩存,或多個(gè)級(jí)的內(nèi)部高速緩存。在一些實(shí)施例中,系統(tǒng)可包括內(nèi)部高速緩存和在核和/或處理器外的外部高速緩存的組合。備選地,所有高速緩存可在核和/或處理器的外部。
特定示范有序核體系結(jié)構(gòu)
圖10A-B示出更具體的示范有序核體系結(jié)構(gòu)的框圖,該核將是芯片中的幾個(gè)邏輯塊(包括相同類型和/或不同類型的其它核)之一。取決于應(yīng)用,邏輯塊通過高帶寬互連網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò))與一些固定功能邏輯、存儲(chǔ)器I/O接口和其它必需的I/O邏輯進(jìn)行通信。
圖10A是根據(jù)本公開內(nèi)容的實(shí)施例的單個(gè)處理器核連同其到管芯上互連網(wǎng)絡(luò)1002的連接和具有其二級(jí)(L2)高速緩存1004的本地子集的框圖。在一個(gè)實(shí)施例中,指令解碼單元1000支持具有壓縮數(shù)據(jù)指令集擴(kuò)展的x86指令集。L1高速緩存1006允許對(duì)到標(biāo)量和向量單元中的高速緩沖存儲(chǔ)器的低遲滯訪問。雖然在一個(gè)實(shí)施例中(為簡化設(shè)計(jì)),標(biāo)量單元1008和向量單元1010使用單獨(dú)的寄存器集(分別為標(biāo)量寄存器1012和向量寄存器1014),并且在其之間傳送的數(shù)據(jù)寫入到存儲(chǔ)器,并且然后從1級(jí)(L1)高速緩存1006中回讀,但本公開內(nèi)容的備選實(shí)施例可使用不同方案(例如,使用單個(gè)寄存器集,或者包括允許在兩個(gè)寄存器文件之間傳送數(shù)據(jù)的通信路徑而沒有寫入和回讀)。
L2高速緩存1004的本地子集是全局L2高速緩存的一部分,全局L2高速緩存劃分成單獨(dú)的本地子集,每個(gè)處理器核一個(gè)子集。每個(gè)處理器核具有到L2高速緩存1004的其自己的本地子集的直接訪問路徑。與訪問其自己的本地L2高速緩存子集的其它處理器核并行,由處理器核讀取的數(shù)據(jù)存儲(chǔ)在其L2高速緩存子集1004中,并且能夠被快速訪問。由處理器核寫入的數(shù)據(jù)存儲(chǔ)在其自己的L2高速緩存子集1004中,并且如果需要,則從其它子集中刷新(flush)。環(huán)形網(wǎng)絡(luò)確保共享數(shù)據(jù)的相干性。環(huán)形網(wǎng)絡(luò)是雙向的,允許諸如處理器核、L2高速緩存和其它邏輯塊的代理在芯片內(nèi)相互進(jìn)行通信。每個(gè)環(huán)形數(shù)據(jù)路徑在每個(gè)方向是1012比特寬。
圖10B是根據(jù)本公開內(nèi)容的實(shí)施例的在圖10A中的部分處理器核的展開圖。圖10B包括L1高速緩存1004的L1數(shù)據(jù)高速緩存1006A部分以及有關(guān)向量單元1010和向量寄存器1014的更多細(xì)節(jié)。具體而言,向量單元1010是16寬向量處理單元(VPU)(參見16寬ALU 1028),它執(zhí)行整數(shù)、單精度浮點(diǎn)、雙精度浮點(diǎn)指令的一個(gè)或更多個(gè)指令。VPU通過混合單元1020支持對(duì)寄存器輸入的混合、通過數(shù)值轉(zhuǎn)換單元1022A-B支持?jǐn)?shù)值轉(zhuǎn)換,并且通過復(fù)制單元1024支持關(guān)于存儲(chǔ)器輸入的復(fù)制。寫掩碼寄存器1026允許預(yù)測(cè)得到的向量寫入。
圖11是根據(jù)本公開內(nèi)容的實(shí)施例的可具有多于一個(gè)核,可具有集成存儲(chǔ)器控制器并且可具有集成圖形的處理器1100的框圖。在圖11中實(shí)線框示出具有單個(gè)核1102A、系統(tǒng)代理1110、一個(gè)或更多個(gè)總線控制器單元1116的集合的處理器1100,而可選添加的虛線框示出具有多個(gè)核1102A-N、系統(tǒng)代理單元1110中的一個(gè)或更多個(gè)集成存儲(chǔ)器控制器單元(一個(gè)或多個(gè))1114的集合及專用邏輯1108的備選處理器。
因此,處理器1100的不同實(shí)現(xiàn)可包括:1) CPU,其中專用邏輯1108是集成圖形和/或科學(xué)(吞吐量)邏輯(可包括一個(gè)或更多個(gè)核),并且核1102A-N是一個(gè)或更多個(gè)專用核(例如,通用有序核、通用無序核、兩者的組合);2)協(xié)處理器,其中核1102A-N是預(yù)期主要用于圖形和/或科學(xué)(吞吐量)的多個(gè)專用核;以及3)協(xié)處理器,其中核1102A-N是大量通用有序核。因此,處理器1100可以是通用處理器、協(xié)處理器或?qū)S锰幚砥?,諸如,例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高吞吐量的集成眾核(MIC)協(xié)處理器(包括30或更多個(gè)核)、嵌入式處理器或諸如此類。處理器可在一個(gè)或更多個(gè)芯片上實(shí)現(xiàn)。處理器1100可以是使用例如BiCMOS、COMS或NMOS的多個(gè)處理技術(shù)的任何技術(shù)的一個(gè)或更多個(gè)襯底的一部分,和/或可在一個(gè)或更多個(gè)襯底上實(shí)現(xiàn)。
存儲(chǔ)器層次結(jié)構(gòu)包括核內(nèi)的一個(gè)或更多個(gè)級(jí)的高速緩存、一個(gè)或更多個(gè)共享高速緩存單元1106的集合和耦合到集成存儲(chǔ)器控制器單元1114集的外部存儲(chǔ)器(未示出)。共享高速緩存1106的集合可包括諸如2級(jí)(L2)、3級(jí)(L3)、4級(jí)(L4)或其它級(jí)的高速緩存的一個(gè)或更多個(gè)中間級(jí)高速緩存、末級(jí)高速緩存(LLC)和/或其組合。雖然在一個(gè)實(shí)施例中,基于環(huán)形的互連單元1112將集成圖形邏輯1108、共享高速緩存單元1106的集合和系統(tǒng)代理單元1110/一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元1114互連,但備選實(shí)施例可使用任何數(shù)量的公知技術(shù)用于將此類單元互連。在一個(gè)實(shí)施例中,在一個(gè)或更多個(gè)高速緩存單元1106與核1102A-N之間保持相干性。
在一些實(shí)施例中,一個(gè)或更多個(gè)核1102A-N能夠進(jìn)行多線程。系統(tǒng)代理1110包括協(xié)調(diào)和操作核1102A-N的那些組件。系統(tǒng)代理單元1110例如可包括功率控制單元(PCU)和顯示單元。PCU可以是或者包括用于調(diào)節(jié)核1102A-N和集成圖形邏輯1108的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動(dòng)一個(gè)或更多個(gè)外部連接的顯示器。
核1102A-N可在體系結(jié)構(gòu)指令集方面是同構(gòu)或異構(gòu)的;也就是,兩個(gè)或更多個(gè)核1102A-N可以能夠執(zhí)行相同指令集,而其它核可只能夠執(zhí)行該指令集的子集或不同指令集。
示范計(jì)算機(jī)體系結(jié)構(gòu)
圖12-15是示范計(jì)算機(jī)體系結(jié)構(gòu)的框圖。本領(lǐng)域中熟知的用于膝上型計(jì)算機(jī)、桌上型計(jì)算機(jī)、手持式PC、個(gè)人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)裝置、網(wǎng)絡(luò)集線器、交換機(jī)、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)、圖形裝置、視頻游戲裝置、置頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持式裝置及各種其它電子裝置的其它系統(tǒng)設(shè)計(jì)和配置也是適合的。通常,能夠結(jié)合如本文中公開的處理器和/或其它執(zhí)行邏輯的各種各樣的系統(tǒng)或電子裝置一般是適合的。
現(xiàn)在參照?qǐng)D12,所示出的是根據(jù)本公開內(nèi)容的一個(gè)實(shí)施例的系統(tǒng)1200的框圖。系統(tǒng)1200可包括耦合到控制器集線器1220的一個(gè)或多個(gè)處理器1210、1215。在一個(gè)實(shí)施例中,控制器集線器1220包括圖形存儲(chǔ)器控制器集線器(GMCH) 1290和輸入/輸出集線器(IOH) 1250(其可以在單獨(dú)芯片上);GMCH 1290包括存儲(chǔ)器和圖形控制器,存儲(chǔ)器1240和協(xié)處理器1245耦合到它們;IOH 1250耦合輸入/輸出(I/O)裝置1260到GMCH 1290。備選地,存儲(chǔ)器和圖形控制器之一或兩者集成在處理器內(nèi)(如本文中所描述的),存儲(chǔ)器1240和協(xié)處理器1245直接耦合到處理器1210,以及與IOH 1250一起在單個(gè)芯片中的控制器集線器1220。存儲(chǔ)器1240可包括(例如,存儲(chǔ)器和/或功率)轉(zhuǎn)變模塊1240A,例如以存儲(chǔ)代碼,所述代碼在被執(zhí)行時(shí),使得處理器執(zhí)行本公開內(nèi)容的任何方法。
另外處理器1215的可選性質(zhì)在圖12中通過虛線表示。每個(gè)處理器1210、1215可包括本文中描述的一個(gè)或更多個(gè)處理核,并且可以是某一版本的處理器1100。
存儲(chǔ)器1240例如可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DARAM)、相變存儲(chǔ)器(PCM)或兩者的組合。對(duì)于至少一個(gè)實(shí)施例,控制器集線器1220經(jīng)諸如前端總線(FSB)的多分支總線、諸如快速通路互連(QPI)的點(diǎn)對(duì)點(diǎn)接口或類似連接1295與一個(gè)或多個(gè)處理器1210、1215進(jìn)行通信。
在一個(gè)實(shí)施例中,協(xié)處理器1245是專用處理器,諸如,例如高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或諸如此類。在一個(gè)實(shí)施例中,控制器集線器1220可包括集成圖形加速器。
在包括體系結(jié)構(gòu)特性、微體系結(jié)構(gòu)特性、熱消耗特性、功率消耗特性及諸如此類的品質(zhì)指標(biāo)譜(spectrum of metrics of merit)方面,在物理資源1210、1215之間能夠存在多種差別。
在一個(gè)實(shí)施例中,處理器1210執(zhí)行控制通用類型的數(shù)據(jù)處理操作的指令。指令內(nèi)嵌入的可以是協(xié)處理器指令。處理器1210將這些協(xié)處理器指令識(shí)別為屬于應(yīng)由附連協(xié)處理器1245執(zhí)行的類型。相應(yīng)地,處理器1210在協(xié)處理器總線或其它互連上將這些協(xié)處理器指令(或表示協(xié)處理器指令的控制信號(hào))發(fā)布到協(xié)處理器1245。一個(gè)或多個(gè)協(xié)處理器1245接受并且執(zhí)行接收到的協(xié)處理器指令。
現(xiàn)在參照?qǐng)D13,圖中所示出是根據(jù)本公開內(nèi)容的實(shí)施例的第一更具體的示范系統(tǒng)1300的框圖。如圖13中所示出的,多處理器系統(tǒng)1300是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),并且包括經(jīng)點(diǎn)對(duì)點(diǎn)互連1350耦合的第一處理器1370和第二處理器1380。每個(gè)處理器1370和1380可以是某一版本的處理器1100。在本公開內(nèi)容的一個(gè)實(shí)施例中,處理器1370和1380分別是處理器1210和1215,而協(xié)處理器1338是協(xié)處理器1245。在另一實(shí)施例中,處理器1370和1380分別是處理器1210,協(xié)處理器1245。
示出處理器1370和1380分別包括集成存儲(chǔ)器控制器(IMC)單元1372和1382。處理器1370也包括作為其總線控制器單元的一部分的點(diǎn)對(duì)點(diǎn)(P-P)接口1376和1378;類似地,第二處理器1380包括P-P接口1386和1388。處理器1370、1380可經(jīng)使用P-P接口電路1378和1388的點(diǎn)對(duì)點(diǎn)(P-P)接口1350交換信息。如圖13中所示出的,IMC 1372和1382將處理器耦合到相應(yīng)存儲(chǔ)器,即存儲(chǔ)器1332和存儲(chǔ)器1334,其可以是本地附連到相應(yīng)處理器的主存儲(chǔ)器的一部分。
處理器1370、1380可各自經(jīng)使用點(diǎn)對(duì)點(diǎn)接口電路1376、1394、1386、1398的單獨(dú)P-P接口1352、1354與芯片集1390交換信息。芯片集1390可以可選地經(jīng)高性能接口1339與協(xié)處理器1338交換信息。在一個(gè)實(shí)施例中,協(xié)處理器1338是專用處理器,諸如,例如高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或諸如此類。
共享高速緩存(未示出)可或者包括在處理器中或者在兩個(gè)處理器外,還經(jīng)P-P互連與處理器連接,使得如果處理器被置于低功率模式中,則任一或兩個(gè)處理器的本地高速緩存信息可存儲(chǔ)在共享高速緩存中。
芯片集1390可經(jīng)接口1396耦合到第一總線1316。在一個(gè)實(shí)施例中,第一總線1316可以是外設(shè)組件互連(PCI)總線,或諸如PCI Express總線或另一第三代I/O互連總線的總線,盡管本公開內(nèi)容的范圍并不那樣限制。
如圖13中所示出的,各種I/O裝置1314可連同將第一總線1316耦合到第二總線1320的總線橋1318,耦合到第一總線1316。在一個(gè)實(shí)施例中,諸如協(xié)處理器、高吞吐量MIC處理器、GPGPU的、加速器(諸如,例如圖形加速器和數(shù)字信號(hào)處理(DSP)單元)、現(xiàn)場可編程門陣列或任何其它處理器的一個(gè)或更多個(gè)另外的處理器(一個(gè)或多個(gè))1315耦合到第一總線1316。在一個(gè)實(shí)施例中,第二總線1320可以是低引腳數(shù)(LPC)總線。在一個(gè)實(shí)施例中,各種裝置可耦合到第二總線1320,例如包括鍵盤和/或鼠標(biāo)1322、通信裝置1327和諸如磁盤驅(qū)動(dòng)器或其它海量存儲(chǔ)裝置的可包括指令/代碼和數(shù)據(jù)1330的存儲(chǔ)單元1328。此外,音頻I/O 1324可耦合到第二總線1320。注意的是,其它體系結(jié)構(gòu)是可能的。例如,系統(tǒng)可實(shí)現(xiàn)多分支總線或其它此類體系結(jié)構(gòu),而不是圖13的點(diǎn)對(duì)點(diǎn)體系結(jié)構(gòu)。
現(xiàn)在參照?qǐng)D14,所示出的是根據(jù)本公開內(nèi)容的實(shí)施例的第二更具體的示范系統(tǒng)1400的框圖。圖13和14中的相同的元素使用相同的附圖標(biāo)記,并且已經(jīng)從圖14中省略了圖13的某些方面以免模糊圖14的其它方面。
圖14示出處理器1370、1380可分別包括集成存儲(chǔ)器和I/O控制邏輯(“CL”)1372和1382。因此,CL 1372、1382包括集成存儲(chǔ)器控制器單元,并且包括I/O控制邏輯。圖14示出不但存儲(chǔ)器1332、1334耦合到CL 1372、1382,而且I/O裝置1414也耦合到控制邏輯1372、1382。遺留I/O裝置1415耦合到芯片集1390。
現(xiàn)在參照?qǐng)D15,所示出的是根據(jù)本公開內(nèi)容的實(shí)施例的SoC 1500的框圖。圖11中的類似元素使用相同的標(biāo)號(hào)。并且,虛線框是關(guān)于更先進(jìn)的SoC的可選特征。在圖15中,一個(gè)或多個(gè)互連單元1502耦合到:應(yīng)用處理器1510,它包括一個(gè)或更多個(gè)核202A-N的集合和一個(gè)或多個(gè)共享高速緩存單元1106;系統(tǒng)代理單元1110;一個(gè)或多個(gè)總線控制器單元1116;一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元1114;一個(gè)或更多個(gè)協(xié)處理器1520的集合,協(xié)處理器1520可包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元1530;直接存儲(chǔ)器存取(DMA)單元1532;以及用于耦合到一個(gè)或更多個(gè)外部顯示器的顯示單元1540。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)協(xié)處理器1520包括專用處理器,諸如,例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、嵌入式處理器或諸如此類。
本文中公開的(例如,機(jī)制的)實(shí)施例可在硬件、軟件、固件中實(shí)現(xiàn),或者在此類實(shí)現(xiàn)方案的組合中實(shí)現(xiàn)。本公開內(nèi)容的實(shí)施例可實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,可編程系統(tǒng)包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元素)、至少一個(gè)輸入裝置以及至少一個(gè)輸出裝置。
諸如圖13中所示出的代碼1330的程序代碼可應(yīng)用到輸入指令以執(zhí)行本文中描述的功能,并且生成輸出信息。輸出信息可以以熟知的方式應(yīng)用到一個(gè)或多個(gè)輸出裝置。出于本申請(qǐng)的目的,處理系統(tǒng)包括具有處理器的任何系統(tǒng),諸如,例如數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器。
程序代碼可以用面向過程或?qū)ο蟮母呒?jí)編程語言來實(shí)現(xiàn),以便與處理系統(tǒng)進(jìn)行通信。程序代碼也可以如果需要,用匯編或機(jī)器語言來實(shí)現(xiàn)。實(shí)際上,本文中描述的機(jī)制在范圍上不限于任何特定的編程語言。在任何情況下,語言可以是編譯或解釋語言。
至少一個(gè)實(shí)施例的一個(gè)或幾個(gè)方面可通過在表示處理器內(nèi)各種邏輯的機(jī)器可讀介質(zhì)上存儲(chǔ)的代表性指令來實(shí)現(xiàn),指令在由機(jī)器讀取時(shí),使得機(jī)器制造邏輯以執(zhí)行本文中所描述的技術(shù)。稱為“IP核”的此類表示可存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上,并且提供到各種客戶或生產(chǎn)設(shè)施以加載到實(shí)際形成邏輯或處理器的制造機(jī)器中。
此類機(jī)器可讀存儲(chǔ)媒體可包括但不限于通過機(jī)器或裝置制造或形成的物品的非暫時(shí)性、有形布置,包括:存儲(chǔ)媒體(例如硬盤)、包括軟盤、光盤、光盤只讀存儲(chǔ)器(CD-ROM)、可重寫光盤(CD-RW)和磁光盤的任何其它類型的盤;半導(dǎo)體裝置,例如只讀存儲(chǔ)器(ROM)、諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、可擦寫可編程只讀存儲(chǔ)器(EPROM)、閃存存儲(chǔ)器、電可擦寫可編程只讀存儲(chǔ)器(EEPROM)的隨機(jī)存取存儲(chǔ)器(RAM);相變存儲(chǔ)器(PCM);磁卡或光卡;或適于用于存儲(chǔ)電子指令的任何其它類型的媒體。
相應(yīng)地,本公開內(nèi)容的實(shí)施例也包括非暫時(shí)性、有形機(jī)器可讀媒體(包含指令或者包含設(shè)計(jì)數(shù)據(jù),如硬件描述語言(HDL)),它定義本文中描述的結(jié)構(gòu)、電路、設(shè)備、處理器和/或系統(tǒng)特征。此類實(shí)施例也可稱為程序產(chǎn)品。
仿真(包括二進(jìn)制翻譯、代碼變形等)
在一些情況下,指令轉(zhuǎn)換器可用于將指令從源指令集轉(zhuǎn)換到目標(biāo)指令集。例如,指令轉(zhuǎn)換器可將指令翻譯(例如,使用靜態(tài)二進(jìn)制翻譯、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制翻譯)、變形、仿真或以其它方式轉(zhuǎn)換成要由核處理的一個(gè)或更多個(gè)其它指令。指令轉(zhuǎn)換器可在硬件、固件、軟件或其組合中實(shí)現(xiàn)。指令轉(zhuǎn)換器可在處理器上,在處理器外或者部分在處理器上,并且部分在處理器外。
圖16是根據(jù)本公開內(nèi)容的實(shí)施例的對(duì)比將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中二進(jìn)制指令的軟件指令轉(zhuǎn)換器的使用的框圖。在所示出的實(shí)施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,盡管備選地,指令轉(zhuǎn)換器可在軟件、固件、硬件或其各種組合中實(shí)現(xiàn)。圖16示出可使用x86編譯器1604對(duì)用高級(jí)語言1602的程序進(jìn)行編譯,以生成可由具有至少一個(gè)x86指令集核的處理器1616在本機(jī)執(zhí)行的x86二進(jìn)制代碼1606。具有至少一個(gè)x86指令集核的處理器1616表示能夠通過兼容執(zhí)行或以其它方式處理(1) Intel x86指令集核的指令集的實(shí)質(zhì)部分或(2)定向?yàn)樵诰哂兄辽僖粋€(gè)x86指令集核的Intel處理器上運(yùn)行的應(yīng)用或其它軟件的對(duì)象代碼版本,與具有至少一個(gè)x86指令集核的Intel處理器執(zhí)行實(shí)質(zhì)上相同功能,以便與具有至少一個(gè)x86指令集核的Intel處理器實(shí)現(xiàn)實(shí)質(zhì)上相同結(jié)果的任何處理器。x86編譯器1604表示可操作來生成x86二進(jìn)制代碼1606(例如,對(duì)象代碼)的編譯器,代碼1606能夠通過或不通過另外的鏈接處理,在具有至少一個(gè)x86指令集核的處理器1616上執(zhí)行。類似地,圖16示出可使用備選指令集編譯器1608對(duì)用高級(jí)語言1602程序進(jìn)行編譯,以生成備選指令集二進(jìn)制代碼1610,代碼1610可由不具有至少一個(gè)x86指令集核的處理器1614(例如,具有執(zhí)行加利福尼亞州Sunnyvale的MIPS Technologies的MIPS指令集,和/或執(zhí)行加利福尼亞州Sunnyvale的ARM Holdings的ARM指令集的核的處理器)在本機(jī)執(zhí)行。指令轉(zhuǎn)換器1612用于將x86二進(jìn)制代碼1606轉(zhuǎn)換成可由不具有x86指令集核的處理器1614在本機(jī)執(zhí)行的代碼。此轉(zhuǎn)換的代碼不可能與備選指令集二進(jìn)制代碼1610相同,因?yàn)槟軌蜻M(jìn)行此操作的指令轉(zhuǎn)換器難以制造;然而,轉(zhuǎn)換的代碼將實(shí)現(xiàn)一般操作,并且由來自備選指令集的指令組成。因此,指令轉(zhuǎn)換器1612表示通過仿真、模擬或任何其它過程,允許不具有x86指令集處理器或核的處理器或其它電子裝置執(zhí)行x86二進(jìn)制代碼1606的軟件、固件、硬件或其組合。