TWI769143B - 用於使用浮點運算之硬體消去監測器的處理器、方法及系統 - Google Patents

用於使用浮點運算之硬體消去監測器的處理器、方法及系統 Download PDF

Info

Publication number
TWI769143B
TWI769143B TW105136944A TW105136944A TWI769143B TW I769143 B TWI769143 B TW I769143B TW 105136944 A TW105136944 A TW 105136944A TW 105136944 A TW105136944 A TW 105136944A TW I769143 B TWI769143 B TW I769143B
Authority
TW
Taiwan
Prior art keywords
processor
erasure
instruction
hardware
event
Prior art date
Application number
TW105136944A
Other languages
English (en)
Other versions
TW201730750A (zh
Inventor
尼琪塔 阿斯塔
艾蒙斯特阿法 歐德亞麥德維爾
Original Assignee
美商英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW201730750A publication Critical patent/TW201730750A/zh
Application granted granted Critical
Publication of TWI769143B publication Critical patent/TWI769143B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/483Indexing scheme relating to group G06F7/483

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Quality & Reliability (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)
  • Hardware Redundancy (AREA)
  • Advance Control (AREA)

Abstract

在實施例中,處理器包括複數個核心,其中至少一個核心包括有消去監測單元。消去監測單元包含電路用以:檢測核心中之浮點(FP)指令的執行,其中,FP指令之執行使用一組FP輸入,並產生FP輸出;決定與輸入到FP指令之該組FP輸入相關聯的最大指數值;從最大指數值減去FP輸出的指數值以得到指數差;以及,回應指數差符合或超過一臨限位準之決定,增加消去事件計數。其它實施例也在描述及主張之列。

Description

用於使用浮點運算之硬體消去監測器的處理器、方法及系統
通言之,本發明的實施例與電腦處理器有關。更特定地說,實施例與包括有用以檢測浮點運算中之消去事件之硬體監測器的電腦處理器有關。
很多電腦處理器都包括有使用浮點格式來實施數值運算的功能。例如電子電機工程師學會為浮點運算所提供之標準(稱為“IEEE 754”)所規定的浮點格式。在IEEE 754標準中,每一個有限浮點數係由3個整數來描述,即,符號(0或1)、有效位數(或「係數」)值、及指數值。此外,在IEEE 754標準中,每一個浮點數字可用精度水準不同的格式來表示。例如,「單精度」格式可使用32位元,及「雙精度」格式可使用64位元。
100:系統
105:系統記憶體
107:剖析器
109:目標應用程式
110:處理器
115:處理器核心
120:消去監測器
142:第一數
144:第二數
146:輸出數
123:消去邏輯
126:消去暫存器
300:系統
303:處理器
304:核心
308:整合式電壓調節器
312:電力控制單元
313:輸入/輸出介面
314:介面
315:整合式記憶體控制器
316:外部電壓調節器
317:電源
301:處理器
320:核心
321:核心域
322:最低階快取記憶體
323:環形互連
324:圖形域
330:系統代理域
332:顯示控制器
335:電力控制單元
340:介面
342:整合式記憶體控制器
302:處理器
370:核心
375:互連
380:非核心
382:共用的快取記憶體
384:整合式記憶體控制器
386:介面
388:電力控制單元
400:處理器
401:核心
402:核心
401a:硬體執行緒槽
401b:硬體執行緒槽
402a:架構狀態暫存器
402b:架構狀態暫存器
420:分支目標緩衝器/指令轉譯緩衝器(I-TLB)
425:解碼器
430:分配器與更名器
440:執行單元
435:重排序器/止用單元
450:資料快取與資料轉譯緩衝器
410:較高階快取記憶體
405:匯流排介面模組
470:記憶體控制器
460:電力控制器
500:核心
501:提取單元
503:指令快取記憶體
505:指令解碼器
510:前端單元
515:亂序引擎
520:執行單元
522:算術邏輯單元
524:向量執行單元
530:暫存器檔案
535:延伸暫存器檔案
540:重排序緩衝器
550:快取記憶體
600:核心
605:分支預測器
610:指令快取記憶體
615:指令解碼器
618:微碼唯讀記憶體
620:發送佇列
630:浮點管線
632:浮點暫存器檔案
634:浮點排程器
635:算術邏輯單元
636:混排單元
638:浮點加法器
640:整數管線
642:整數暫存器檔案
644:整數排程器
645:算術邏輯單元
646:移位器單元
648:跳躍執行單元
650:記憶體執行排程器
652:位址產生單元
654:轉譯後備緩衝器
660:資料快取記憶體
670:分配器/更名器
680:重排序緩衝器
700:處理器
710:提取單元
715:解碼單元
725:發送邏輯
730:佇列
735:整數單元
740:乘法單元
750:浮點/向量單元
760:雙發送單元
770:載入/儲存單元
780:寫回單元
800:處理器核心
810:提取單元
815:解碼器/更名器/配送器
820:快取記憶體
825:佇列
830:發送邏輯
835:整數單元
840:乘法單元
850:浮點/向量單元
860:分支單元
870:載入/儲存單元
880:寫回單元
900:晶片上系統
910:核心單元
920:圖形單元
925:影像訊號處理器
930:非揮發性儲存器
935:記憶體控制器
940:電力管理器
945:安全處理器
950:視訊編碼器
955:顯示控制器
960:介面
1000:晶片上系統
1010:第一核心域
1012:第一核心
1015:快取記憶體
1020:第二核心域
1022:第二核心
1025:快取記憶體
1030:圖形域
1040:同調互連
1050:記憶體控制器
1100:晶片上系統
1110:中央處理單元域
1120:圖形處理單元域
1130:數位訊號處理器單元
1140:通訊單元
1150:多媒體處理器
1160:感測器單元
1170:影像訊號處理器
1180:顯示處理器
1190:位置單元
1200:系統
1205:基頻處理器
1210:應用程式處理器
1215:電力管理積體電路
1220:使用者介面/顯示器
1225:感測器
1230:快閃記憶體
1240:捉捕裝置
1245:通用積體電路卡(UICC)
1250:安全處理器
1260:近場通訊無接觸介面
1265:近場通訊天線
1270:射頻收發器
1275:無線區域網路收發器
1280:GPS感測器
1290:天線
1295:音頻輸入裝置
1300:系統
1310:晶片上系統
1320:觸控面板
1325:周邊集線器
1330:乙太網路介面
1340:快閃記憶體
1345:動態隨機存取記憶體
1350:無線區域網路單元
1355:天線
1360:感測器
1365:音頻編碼解碼器
1370:音頻輸出裝置
1380:電力管理積體電路
1390:電池
1395:AC轉接器
1400:電腦系統
1410:處理器
1415:系統記憶體
1420:大量儲存器
1422:快閃記憶體裝置
1424:顯示器
1425:觸控螢幕
1430:觸控板
1435:內建式控制器
1436:鍵盤
1437:風扇
1438:信賴平台感測器模組
1439:熱感測器
1440:感測器集線器
1441:加速器
1442:環境光感測器
1443:羅盤
1444:陀螺儀
1445:近場通訊單元
1446:熱感測器
1450:無線區域網路單元
1452:藍牙單元
1454:照相機模組
1455:全球定位系統模組
1456:無線廣域網路單元
1457:用戶辨識模組
1460:數位訊號處理器
1462:整合式編碼器/解碼器及放大器
1463:喇叭
1464:耳機插孔
1465:麥克風
1500:多處理器系統
1550:點對點互連
1570:第一處理器
1574:處理器核心
1580:第二處理器
1584:處理器核心
1538:高性能圖形引擎
1576:匯流排控制器單元點對點介面
1578:匯流排控制器單元點對點介面
1586:點對點(P-P)介面
1588:點對點(P-P)介面
1550:點對點(P-P)介面
1532:記憶體
1534:記憶體
1572:記憶體控制器集線器
1582:記憶體控制器集線器
1594:點對點介面
1598:點對點介面
1562:點對點(P-P)互連
1564:點對點(P-P)互連
1590:晶片組
1539:高性能介面
1596:介面
1516:第一匯流排
1514:輸入/輸出裝置
1520:第二匯流排
1518:匯流排橋接器
1515:附加的處理器
1524:音頻輸入/輸出
1522:鍵盤及/或滑鼠
1527:通訊裝置
1526:通訊裝置
1528:資料儲存單元
1530:碼
圖1A係按照一或多個實施例之系統的方塊圖。
圖1B顯示按照一或多個實施例的例子。
圖1C係按照一或多個實施例之消去監視器的方塊圖。
圖2係按照一或多個實施例的程序。
圖3A係按照一或多個實施例之部分系統的方塊圖。
圖3B係按照一或多個實施例之多域處理器的方塊圖。
圖3C係按照一或多個實施例之處理器的方塊圖。
圖4係按照一或多個實施例之包括有多核心之處理器的方塊圖。
圖5係按照一或多個實施例之處理器核心之微架構的方塊圖。
圖6係按照一或多個實施例之處理器核心之微架構的方塊圖。
圖7係按照一或多個實施例之處理器核心之微架構的方塊圖。
圖8係按照一或多個實施例之處理器核心之微架構的方塊圖。
圖9係按照一或多個實施例之處理器的方塊圖。
圖10係按照一或多個實施例之代表性SoC的方塊圖。
圖11係按照一或多個實施例之SoC另一例的方塊圖。
圖12係可使用一或多個實施例之系統例的方塊圖。
圖13係會使用一或多個實施例之另一系統例的方塊圖。
圖14係按照一或多個實施例之電腦系統的方塊圖。
圖15係按照一或多個實施例之系統的方塊圖。
【發明內容與實施方式】
在一些情況中,浮點指令可導致稱為「消去」的事件。例如,當兩個具有類似值的浮點輸入相減時發生巨量消去,從而產生遠遠小於兩個浮點輸入的輸出值。在此情況,該輸出的浮點表示法可能喪失實際輸出值之大部分的有效數字。有效位數之此種喪失的蘊涵可由使用者決定。
按照一些實施例,處理器核心中可包括硬體消去監測器,且可檢測浮點指令中消去的事例(在後文中稱為「消去事件」)。在一些實施例中,消去監測器可計算指令輸出的指數值與和指令輸入相關聯之最大指數之間的差。此外,如果此差大於所定義的臨限值,則消去監測器可增加消去計數。消去監測器可包括暫存器來儲存消去計數。在一些實施例中,所儲存的消去計數可用來提供消去資訊給使用者。
雖然以下的實施例是參考特定的實施來描述,但實施例不限於此方面。特別是,可預期的,與本文所描述之實施例類似的技術與教學可應用於其它類型的電路、半導體裝置、處理器、系統、等。例如,所揭示的實施例可在任 何類型的電腦系統上實施,包括伺服器電腦(例如,塔式、機架式、刀鋒式、微伺服器等)、通訊系統、儲存系統、任何組構的桌上型電腦、膝上型電腦、筆記型電腦、及平板電腦(包括2:1平板、平板手機等)。
此外,所揭示的實施例也可用於其它的裝置,諸如手持式裝置、系統單晶片(SoC)、及內嵌的應用軟體)。手持式裝置的例子包括細胞式電話,智慧型手機、網際網路協定的裝置、數位相機、個人數位助理(PDA)、及手持式PC。內嵌式應用軟體典型上可包括微控制器、數位訊號處理器(DSP)、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換機、可穿戴裝置、或是可執行下文所教之功能及操作的任何其它系統。此外,實施例可在具有標準語音功能的行動終端中實施,諸如行動電話、智慧型手機及平板手機,及/或在無標準無線語音功能通訊能力的非行動終端中實施,諸如很多穿戴式裝置(wearables)、平板電腦、筆記型電腦、桌上型電腦、微伺服器、伺服器等。
現參考圖1A,圖中顯示按照一或多個實施例之系統100的方塊圖。在一些實施例中,系統100可以是電子裝置之全部或部分或組件。例如,系統100可以是細胞式電話、電腦、伺服器、網路裝置、系統單晶片(SoC)、控制器、無線收發器、電源供應器等。此外,在一些實施例中,系統100可以是任何相關或互相連接之裝置的群組,諸如資料中心、計算叢集等。
如圖1A所示,系統100可包括操作地耦接至系統記憶體105的處理器110。此外,雖然圖1A中未顯示,但系統100可包括其它組件。處理器110可以是通用硬體處理器(即,中央處理單元(CPU))。如圖所示,處理器110可包括任何數量的處理器核心115。每一個核心115可以是通用處理核心。
在一或多個實施例中,每一個核心115可包括消去監測器120。消去監測器120可以是專用於檢測及/或計數各個核心115中發生消去事件之事例的硬體單元。例如,消去監測器120可在電路及/或核心115的微架構中實施。
在一或多個實施例中,系統記憶體105可用任何類型的電腦記憶體(例如,動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、非揮發性記憶體(NVM)、DRAM與NVM的組合等)來實施。在一或多個實施例中,系統記憶體105可包括剖析器107與目標應用程式109。
在一些實施例中,剖析器107可以是剖析應用程式。此外,目標應用程式109可以是被剖析器107分析的軟體應用程式。例如,目標應用程式109可包括會導致消去事件的浮點指令。因此,在一些實施例中,剖析器107可分析關於目標應用程式109之浮點指令中任何消去事件之事例的資訊。此外,剖析器107可使用此資訊來決定目標應用程式109的特性(例如,驗證資訊、正確性資訊等)。此外,剖析器107可提供關於目標應用程式109的分析及 /或建議給使用者(例如,程式員、開發者、分析員等)。
現參考圖1B,圖中顯示按照一或多個實施例的消去事件例。在圖1B的例中,浮點減法指令可計算第一數142(即值「3.1415926」)減去第二數144(即值「3.1415924」),並因此得到輸出數146。須注意,在圖1B的例中,每一個數都以有效位數為8個有效數字的浮點格式來表示。
例如,第一數142可表示成有效位數包括8個數字「31415926」的浮點格式。此外,第一數142可表示成符號值(未顯示)指示第一數142為正數的浮點格式。此外,第一數142可表示成指數值(未顯示)為-7的浮點格式,其指示第一數142的小數點位於第一個數字「3」之後(即,指示第一數142具有一個整數數字及7個小數數字)。在另一例中,第二數144可表示成有效位數包括8個數字「31415924」及指數值為-7的浮點格式。
在一些實施例中,具有類似值之浮點數的減法會導致值極小的浮點輸出。就此而論,與浮點輸入值相較,表示浮點輸出之有效位數的數字會減少。例如,如圖1B所示,浮點減法指令的結果是輸出數146(即,值「0.0000002」)。須注意,輸出數146的第一個有效數字是數字「2」。因此,輸出數146可表示成有效位數包括8個數字「20000000」的浮點格式。此外,輸出數146可用指數值為-14的浮點格式來表示。
須注意,雖然第一FP數142與第二FP數144包括8個有效數字,但輸出FP數146僅包括一個有效數字,即,數字「2」。就此而論,在圖1B的例中,在此例期間浮點減法指令發生消去事件,致使失去7個有效位數數字。
須注意,圖1B顯示浮點減法指令導致消去事件的例子,但實施例並不限於此方面。例如,可設想浮點加法指令將兩個具有類似指數值但符號相反的浮點數相加。在此情況中,輸出值會具有比輸入小的指數值,且具有的有效數字會少於輸入。因此,浮點加法指令也會觸發消去事件。在另一例中,浮點積和熔加(FMA)指令可具有「(A*B)+C」的形式(其中,A、B、與C係指令參數)。可設想,在「A*B」與「C」符號不同但指數值類似的事件中,FMA指令也會觸發消去事件。
現參考圖1C,圖中顯示按照一或多個實施例之消去監測器120的方塊圖。如圖1C所示,在一些實施例中,消去監測器120可包括消去邏輯123與一或多個消去暫存器126。
在一些實施例中,消去邏輯123可檢測或以其它方式識別會導致消去事件的浮點指令(在後文中稱為「目標指令」)。例如,消去邏輯123可藉由包括在核心115中的浮點單元(Floating Point Unit;FPU)(未顯示)來檢測浮點加法、減法、或FMA指令之執行。回應目標指令的檢測,消去邏輯123可決定與輸入到浮點指令之輸入組相 關聯的最大指數值。例如,在加或減法指令的情況中,消去邏輯123可決定兩個輸入參數中之最大的指數值。在另一例中,在FMA指令「(A*B)+C」的情況中,消去邏輯123可決定輸入「C」與另兩個輸入之乘積「A*B」中之最大的指數值。此外,消去邏輯123可將最大指數值減法指令輸出的指數值以得到指數差。
在一些實施例中,消去邏輯123可比較指數差與所定義的臨限位準。此外,回應指數差符合或超過臨限位準之決定,消去邏輯123可增加消去事件的計數。在一些實施例中,消去事件計數可儲存在消去暫存器126中。此外,在一些實施例中,如果所儲存的消去事件計數超過臨限計數水準,消去邏輯123即在處理器中導致異常。
在一些實施例中,消去暫存器126可儲存關於每一個消去事件的附加資訊,或與儲存在別處的附加資訊相關聯。例如,消去暫存器126(或其它儲存器)也儲存關於與每一個消去事件相關聯的時間及/或程式位置的資訊。在其它例中,可被儲存的資訊有消去大小(即,消去事件的指數差)、給定程式位置(例如,指令位址)的平均消去大小、最大消去大小、最小消去大小、臨限值被跨過的次數、等。
在一些實施例中,儲存在消去暫存器126中的資訊可用來決定應用程式及/或系統的特性。例如,參考圖1A-1C,剖析器107可使用儲存在消去暫存器126中的消去事件計數來決定目標應用程式109的特性。此外,剖析器 107也可使用消去事件的時間及/或程式位置資訊來決定目標應用程式109的特性。
在一些實施例中,消去邏輯123可與專用的目標指令(例如,浮點減法、加法、或FMA指令)交互作用來檢測消去事件。在這些實施例中,目標指令的每一項執行包括決定與輸入相關聯之最大指數值與輸出之指數值之間的差,並將此差與所定義的臨限位準比較,來決定是否發生消去事件。因此,在這些實施例中,基於指數值的這些運算並非由消去邏輯123實施。更明確地說,消去邏輯123可接收目標指令之執行所產生的指示,來指示在該執行期間是否檢測到消去事件。此外,回應此指示,消去邏輯123可增加消去事件計數。須注意,如果處理器所執行的這些目標指令缺少消去邏輯123(或消去邏輯123被去能),則消去事件的指示可能會被處理器忽略。
現參考圖2,圖中顯示按照一或多個實施例的程序200。在一些實施例中,所有或部分的程序200可由圖1A-1C中所示的消去監測器120來實施。程序200可在硬體、軟體、及/或韌體中實施。在硬體的實施例中,其可實施為電路及/或微架構。此外,在韌體與軟體的實施例中,其可藉由電腦執行儲存在非暫時性機器可讀取媒體中的指令來實施,機器可讀取媒體諸如光學、半導體、或磁性儲存裝置。機器可讀取媒體可儲存資料,其如果被至少一部機器使用,致使該至少一部機器製造至少一個用來實施方法的積體電路。基於說明之緣故,以下係參考圖1A- 1C來描述包括在程序200中的步驟。不過,本文所討論之各種實施例的範圍並不限於此方面。
在方塊202,可藉由處理器核心來執行目標指令,例如,參考圖1A-1C,消去邏輯123可檢測核心115所執行的浮點加法、減法、或浮點積和熔加(FMA)指令。在一些實施例中,指令之執行可以是目標應用程式109之執行或測試程序的一部分。
在方塊204,決定與一組指令輸入相關聯的最大指數值。例如,參考圖1A-1C,消去邏輯123可決定輸入到減法指令之兩個輸入的最大指數值(例如,第一數142與第二數144)。在另一例中,關於具有「(A*B)+C」形式的FMA指令,消去邏輯123可決定兩個式子「A*B」與「C」其中最大的指數值。
在方塊206,可決定指令之輸出的指數值。例如,參考圖1A-1C,消去邏輯123可決定執行第一數142減第二數144之減法所得到之輸出數146的指數值。
在方塊208,可從與指令輸入相關聯的最大指數值減去指令輸出的指數值,以得到指數差。在方塊210,如果指數差超過臨限值,則增加消去事件計數。例如,參考圖1A-1C,消去邏輯123可決定與輸入相關聯之最大指數值與輸出之指數值之間的差,且可比較該差與所定義的臨限位準。如果該差符合或超過所定義的臨限位準,則消去邏輯123可增加消去事件計數。
在方塊212,消去事件計數可儲存在包括在處理器內 的暫存器內。例如,參考圖1A-1C,消去邏輯123可增加儲存在消去暫存器126中的消去事件計數。
在方塊214,可使用所儲存的消去事件計數來決定程式特性。例如,參考圖1A-1C,剖析器107可使用儲存在消去暫存器126中的消去事件計數來決定目標應用程式109的特性。在一些實施例中,剖析器107也可使用關於消去事件的時間及/或程式位置資訊來決定目標應用程式109的特性。在方塊214之後,程序200結束。
須注意,提供圖1A-1C與圖2中所顯示的例子係為了說明,且無意限制任何實施例。特別是,可設想系統100及/或消去監測器120可包括與圖1A-1C所示不同的組件、額外的組件、組件之不同的配置、及/或不同數量的組件。例如,參考圖1A,可設想消去監測器120可包括在處理器110中,但可在每一個核心115的外部。在另一例中,消去暫存器126可包括在處理器110中,但在消去監測器120的外部。此外,可設想圖1A-1C與圖2所示例中的細節可用於一或多個實施例的任何之處。可設想其它的變形且可用於各不同的實施例中。
現參考圖3A,圖中顯示按照本發明實施例之系統300的方塊圖。如圖3A所示,系統300可包括各種組件,可包括處理器303,在圖中係顯示成多核心處理器。處理器303可經外部電壓調節器316耦接至電源317,電壓調節器316可實施首次電壓轉換,以提供初級經調節的電壓給處理器303。
如圖中所見,處理器303可以是包括多個核心304a-304n的單晶粒處理器。此外,每一個核心304可與整合式電壓調節器(IVR)308a-308n相關聯,其接收經調節的初級電壓,並產生工作電壓提供給與IVR 308相關聯之處理器的一或多個代理。因此,實施IVR可容許每一個核心304之電壓、電力及性能的個別細粒控制。就此而論,每一個核心304可在各自獨立的電壓與頻率下工作,能夠有最大的彈性且給予最寬廣的機會來平衡電力消耗與效能。在一些實施例中,使用多個IVR 308能夠將組件群組成各自獨立的電力面,使得電力可被IVR 308調節且只供應給該群組中的那些組件。在電力管理期間,當處理器處於低電力狀態時,一個IVR 308之特定電力面的電力可被降低或關閉,而另一個IVR 308之另一個電力面可保持動作中或全功率供電。
現仍參考圖3A,處理器內會存在有附加組件,包括輸入/輸出介面313、其它介面314、及整合式記憶體控制器315。如圖中所見,這些組件的每一個都可由另一個整合式電壓調節器308x供電。在一實施例中,介面313可按照Intel® Quick Path Interconnect(QPI)協定,其在快取記憶體同調協定中提供點對點(PtP)的鏈結,該協定包括實體層、鏈結層、及協定層。依次,介面314可按照周邊組件高速互連(PCIeTM)規格,例如,PCI ExpressTM規格基本規格版本2.0(2007年1月17日發行)。
圖中亦顯示電力控制單元(PCU)312,其可包括用 以實施關於處理器303之電力管理操作的硬體、軟體及/或韌體。如圖中所示,PCU 312經由數位介面提供控制資訊給外部電壓調節器316,以致使外部電壓調節器316產生適當之經調節的電壓。PCU 312也經由另一個數位介面提供控制資訊給IVR 308,用以控制工作電壓之產生(或致使對應的IVR 308在低電力模式中被去能)。在一些實施例中,提供給IVR 308的資訊可包括對應之核心304的電力狀態。
在各不同的實施例中,PCU 312包括用來實施硬體式電力管理的各式電力管理邏輯單元。此電力管理可以是完全由處理器控制(例如,藉由各種不同的處理器硬體,且是由工作負載及/或電、熱、或其它的處理器限制來觸發)、及/或電力管理可回應外部源來實施(諸如平台或管理電力管理源或系統軟體)。
雖為易於說明而未顯示,但須瞭解,處理器303內可存在有諸如非核心邏輯的附加組件及其它組件,諸如內部記憶體,例如,一或多階的快取記憶體階層等。此外,雖然圖3A的實施中顯示有外部電壓調節器,但實施例無此限制。
雖為易於說明而未顯示於圖3A,但在一些實施例中,處理器303可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,處理器303可實施前文參考圖1A-1C及圖2中所描述的一些或全部組件及/或功能。
實施例可在用於各種市場的處理器中實施,包括伺服器處理器、桌上型處理器、行動處理器等。現參考圖3B,圖中顯示按照一或多個實施例之多域處理器301的方塊圖。如圖3B的實施例所示,處理器301包括多個域。特別是,核心域321可包括複數個核心3200-320n,圖形域324可包括一或多個圖形引擎,且可另存在系統代理域330。在一些實施例中,系統代理域330可在獨立於核心域的頻率下執行,且可全時保持電力開啟以處理電力控制事件與電力管理,以使得域321及324可被控制而動態地進入及離開高電力與低電力狀態。每一個域321及324可在不同的電壓及/或電力下工作。須注意,雖然僅顯示三個域,但須瞭解,本發明之範圍並不限於此方面,且在其它的實施例中可存在其它的域。例如,可存在多核心域,且每一個核心域包括至少一個核心。
一般來說,每一個核心320除了各種執行單元及附加的處理元件之外,可另包括低階的快取。依次,各式核心可彼此耦接,並共用複數個最低階快取(LLC)3220-322n單元所形成的快取記憶體。在各不同的實施例中,LLC 322可在各核心與圖形引擎以及各種媒體處理電路之中被共用。如圖中所見,環形互連323將核心耦接在一起,並提供核心320、圖形域324與系統代理域330之間的互連。在一實施例中,互連323可以是核心域321的一部分。不過,在其它實施例中,環形互連323可以有其自己的域。
如圖中進一步所見,系統代理域330可包括顯示控制器332,其提供與相關聯之顯示器的介接與對其的控制。此外,系統代理域330可包括用來實施電力管理的電力控制單元335。
如圖3B中進一步所見,處理器301可進一步包括整合式記憶體控制器(IMC)342,其可提供與系統記憶體的介接,諸如動態隨機存取記憶體(DRAM)。可存在有多個介面3400-340n,使處理器與其它電路之間能夠互連。例如,在一實施例中,可提供至少一個直接媒體介面(DMI)及一或多個PCIeTM介面。此外,為了提供其它代理之間的通訊,諸如附加的處理器或其它電路,也可提供按照Intel® Quick Path Interconnect(QPI)協定的一或多個介面。雖然圖3B的實施例是以高階來顯示,但須瞭解,本發明的範圍並不只限於此方面。
雖然為了易於說明而未顯示於圖3B,但在一些實施例中,處理器301可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,處理器301可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
雖然為了易於說明而未顯示,但須瞭解,處理器303內可存在有附加的組件,諸如無核心邏輯及其它組件,諸如內部記憶體,例如,一或多階的快取記憶體階層,等。此外,雖然圖3A的實施中未顯示外部電壓調節器,但實施例不受此限制。
現參考圖3C,圖中顯示按照本發明之實施例的處理器302之方塊圖。如圖3C所示,處理器302可以是包括複數個核心370a-370n的多核心處理器。在一實施例中,每一個此種核心可以是獨立的電力域,且可被組構成根據工作負荷進入或離開活性狀態及/或最大效能狀態。各種不同的核心可經由互連375耦接至系統代理或包括有各種不同組件的非核心380。如圖中所見,非核心380可包括共用的快取382,其可以是最後階快取。此外,非核心380可包括整合式記憶體控制器384,例如經由記憶體匯流排與系統記憶體(圖3C中未顯示)通訊。非核心380也包括各種介面386a-386n與電力控制單元388,其包括用以實施本文所描述之電力管理技術的邏輯。
此外,經由介面386a-386n可連接到各種晶片外的組件,諸如周邊裝置、大量儲存器等。雖然圖3C中的實施例以此特定的實施來顯示,但本發明的範圍並不限於此方面。
雖然為了易於說明而未顯示於圖3C,但在一些實施例中,處理器302可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,處理器302可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
參考圖4,圖中說明包括多個核心之處理器的實施例。處理器400包括任何處理器或處理裝置,諸如微處理器、內嵌式處理器、數位訊號處理器(DSP)、網路處理 器、手持式處理器、應用軟體處理器、協處理器、系統單晶片(SoC)、或用來執行碼的其它裝置。在一實施例中,處理器400包括至少兩個核心-核心401與402,其可包括不對稱式核心或對稱式核心(說明的實施例)。不過,處理器400可包括任何數量的對稱式或非對稱式處理元件,
在一實施例中,處理元件指的是用以支援軟體執行緒的硬體或邏輯。硬體處理元件的例子包括:執行緒單元、執行緒槽、執行緒、處理單元、上下文、上下文單元、邏輯處理器、硬體執行緒、核心、及/或有能力為處理器保持狀態的任何其它元件,諸如執行狀態或架構狀態。換言之,在一實施例中,處理元件指的是有能力單獨與碼相關聯的任何硬體,諸如軟體執行緒、作業系統、應用軟體、或其它碼。實體處理器典型上指的是積體電路、其可能包括任何數量的其它處理元件,諸如核心或硬體執行緒。
核心通常指的是位於有能力保持獨立架構狀態之積體電路上的邏輯,其中,每一個獨立保持的架構狀態係與至少一些專用的執行資源相關聯。相對於核心,硬體執行緒典型上指的是位於有能力保持獨立架構狀態之積體電路上的邏輯,其中,該獨立保持的架構狀態共同存取執行資源。如所見,當某些資源被共用而其它資源被專用於架構狀態時,硬體執行緒與核心之命名間的界線重疊。然而,作業系統通常將核心與硬體執行緒視為個別的邏輯處理器,在此,作業系統能夠在每一個邏輯處理器上個別地排 程工作。
如圖4中之說明,實體處理器400包括核心401與402兩個核心。在此,將核心401與402考慮成對稱核心,即,這兩個核心具有相同的組構、功能元件、及/或邏輯。在另一例中,核心401包括亂序處理器核心,而核心402包括循序處理器核心。不過,核心401與402可各自地選擇任何類型的核心,諸如原生核心、軟體管理的核心、適合執行原生指令集架構(ISA)的核心、適合執行轉譯ISA的核心、共設計的核心、或其它已知核心。尚待進一步討論,下文進一步描述核心401中所說明的功能單元,核心402中的單元以相同方式操作。
如圖之描繪,核心401包括兩個硬體執行緒401a與401b,其也被稱為硬體執行緒槽401a與401b。因此,在一實施例中,諸如作業系統的軟體實體將處理器400視為4個分開的處理器,即,4個邏輯處理器或有能力同時執行4個軟體執行緒的處理元件。如前文所提及,第一執行緒係與架構狀態暫存器401a相關聯,第二執行緒係與架構狀態暫存器401b相關聯,第三執行緒係與架構狀態暫存器402a相關聯,及第四執行緒係與架構狀態暫存器402b相關聯。如前文所述,在此,每一個架構狀態暫存器(401a、401b、402a、及402b)可以指的是處理元件、執行緒槽、或執行緒單元。如圖之說明,架構狀態暫存器401a在架構狀態暫存器401b中被複製,因此,有能力為邏輯處理器401a與邏輯處理器401b儲存個別的架構狀態 /上下文。在核心401中,也為執行緒401a、401b複製其它較小的資源,諸如分配器與更名器方塊430中的指令指標符與更名邏輯。諸如重排序器/止用單元435中的重排序緩衝區、I-TLB 420、載入/儲存緩衝區、及佇列等一些資源,可經由分割而共用。諸如通用內部暫存器、分頁表基暫存器(page-table base register)、低階資料快取記憶體與資料-TLB 450、執行單元440、及部分的亂序單元435等其它資源都可完全共用。
處理器400通常包括其它資源,這些資源可以供處理元件完全共用,經分割共用,或專用。在圖4中說明具有處理器之具說明性之邏輯單元資源的純例示性處理器實施例。須注意,處理器可包括或省略任何這些功能單元,以及包括未描繪之任何其它已知的功能單元、邏輯、或韌體。如圖之說明,核心401包括簡化具有代表性的亂序(OOO)處理器核心。但在不同的實施例中可使用有序處理器。OOO核心包括用以預測要被執行/取用之分支的分支目標緩衝器420,以及為指令儲存位址轉換登錄的指令轉譯緩衝器(I-TLB)420。
核心401進一步包括耦接至提取單元420用以解碼被提取之元素的解碼器425。在一實施例中,提取邏輯包括分別與執行緒槽401a、401b相關聯之個別的定序器。通常,核心401與第一ISA相關聯,其定義/指定可在處理器400上執行的指令。通常,機器碼指令係第一ISA的一部分,其包括部分的指令(稱為運算碼),其參考/指定 所要實施的指令或操作。解碼器425包括從它們的運算碼來辨識這些指令的電路,並在管線中傳遞經解碼的指令做第一ISA所定義的處理。例如,在一實施例中,解碼器425包括被設計成或適合用來辨識特定指令的邏輯,諸如異動式指令。由於解碼器425的辨識,架構或核心401採取特定、預定之動作來實施與適當指令相關聯的工作。很重要須注意,本文所描述的任何任務、方塊、操作、及方法,都可回應單或多個指令而實施;其中的一些可以是新或舊指令。
在一例中,分配與更名方塊430包括用以保留資源的分配器,諸如用以儲存指令處理結果的暫存器檔案。不過,執行緒401a與401b具有亂序執行的潛在能力,其中,分配與更名方塊430也保留其它資源,諸如用於追蹤指令結果的重排序緩衝區。單元430也可包括暫存器更名器,用以將程式/指令參考暫存器更名成處理器400內部的其它暫存器。重排序器/止用單元435包括的組件諸如前所提及的重排序緩衝器、載入緩衝器、及儲存緩衝器,用以支援亂序執行及亂序執行後之指令的循序止用。
在一實施例中,排程器及執行單元方塊440包括用以在執行單元上排程指令/操作的排程器單元。例如,在具有可用之浮點執行單元之執行單元的埠上排程浮點指令。也包括與執行單元相關聯的暫存器檔案,用來儲存資訊指令處理結果。例示性的執行單元包括浮點執行單元、整數執行單元、跳越執行單元、載入執行單元、儲存執行單 元、及其它已知的執行單元。
較低階的資料快取與資料轉譯緩衝器(D-TLB)450也耦接至執行單元440。資料快取係用來儲存對元素之最近的使用/運算,諸如資料運算元,其潛在地在記憶體中保持一致性狀態。D-TLB係用來儲存新近的虛擬/線性到實體位址的轉譯。如一特定的例子,處理器可包括分頁表結構來將實體記憶體解構到複數個虛擬分頁中。
在此,核心401與402共享存取較高階或更外層的快取410,其係快取新近被提取的元素。須注意,較高階或更外層意指快取的階層增加或離執行單元愈來愈遠。在一實施例中,較高階快取410係最後一層資料快取-處理器400之記憶體階層中最後的快取-諸如第二或第三層資料快取。不過,較高階快取410也無此限制,其可包括指令快取或與其相關聯。在解碼器425之後可代之以耦接追蹤快取(指令快取類型)來儲存最近解碼的軌跡。
在所描繪的組構中,處理器400也包括匯流排介面模組405與電力控制器460,其可按照本發明之實施例來實施電力管理。在此情況,匯流排介面405與處理器400外部的裝置通訊,諸如系統記憶體與其它組件。
記憶體控制器470可與其它裝置介接,諸如一或很多的記憶體。在例中,匯流排介面405包括與記憶體控制器及圖形控制器互連的環,前者用於介接記憶體,後者用於介接圖形處理器。在SoC的環境中,即使更多的裝置,諸如網路介面、協同處理器、記憶體、圖形處理器、及任何 其它已知的電腦裝置/介面,都可整合在單一晶粒或積體電路上,以提供小的外形因數及高功能與低耗電。
雖然為了易於說明而未顯示於圖4,但在一些實施例中,處理器400可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,處理器400可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
現參考圖5,圖中的方塊圖顯示按照本發明一實施例之處理器核心的微架構。如圖5所示,處理器核心500可以是多級管線式亂序處理器。核心500可根據所接收的工作電壓在各種電壓下操作,工作電壓可接收自整合式電壓調節器或外部電壓調節器。
如圖5中所見,核心500包括前端單元510,其可用來提取要被執行的指令,並準備這些指令供稍後在處理器管線中使用。例如,前端單元510可包括提取單元501、指令快取503、及指令解碼器505。在一些實施中,前端單元510可另包括追蹤快取,連同微碼儲存器以及微操作儲存器。提取單元501可提取巨集指令,例如,從記憶體或指令快取503提取,並將其饋送至指令解碼器505,將其解碼成原指令,即,供處理器執行的微操作。
亂序(OOO)引擎515耦接於前端單元510與執行單元520之間,其用來接收微指令並為執行這些指令做準備。更明確的亂序引擎515可包括各種緩衝器,用於重排序微指令流及分配執行所需的各種資源,以及提供邏輯暫 存器的更名到各種暫存器檔案內的儲存位置上,諸如暫存器檔案530與延伸暫存器檔案535。暫存器檔案530可包括用於整數與浮點運算之分開的暫存器檔案。延伸暫存器檔案535可提供向量大小之單元的儲存,例如,每個暫存器為256或512位元。
存在於執行單元520內的各種資源,在其它專用硬體中,包括例如各種不同的整數、浮點、及單指令多資料(SIMD)邏輯單元。例如,在這些些執行單元中,這些執行單元可包括一或多個算術邏輯單元(ALU)522及一或多個向量執行單元524。
來自執行單元的結果可提供給止用邏輯,亦即重排序緩衝器(ROB)540。更特定地說,ROB 540可包括各種陣列與邏輯,用以接收與要被執行之指令相關聯的資訊。接著,ROB 540檢查此資訊以決定該指令是否可被有效地止用及所得到的資料確認處理器的架構狀態,或者,是否發生一或多個阻止指令正確止用的異常。當然,ROB 540可處置與止用相關聯的其它操作。
如圖5所示,ROB 540耦接到快取550,在一實施例中其可以是低階快取(例如,L1快取),雖然本發明的範圍不限於此方面。此外,執行單元520可直接耦接至快取550。從快取550開始,會發生與較高階快取、系統記憶體等的資料傳遞。雖然圖5的實施例以此高階圖來顯示,但須瞭解,本發明的範圍不限於此方面。例如,雖然圖5之實施係關於亂序的機器,諸如Intel® x86指令集架 構(ISA),但本發明的範圍不限於此方面。亦即,其它實施例可在循序處理器、精簡指令集計算(RISC)處理器(諸如ARM式的處理器)、或其它ISA類型的處理器(經由仿真引擎及相關之邏輯電路可仿真不同ISA之指令與操作)中實施。
雖然為了易於說明而未顯示於圖5,但在一些實施例中,核心500可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,核心500可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
現參考圖6,圖中的方塊圖顯示按照另一實施例之處理器核心的微架構。在圖6的實施例中,核心600可以是不同微架構的低功率核心,諸如管線深度較淺的Intel® AtomTM式處理器,設計用來降低功耗。如所見,核心600包括耦接至指令解碼器615以提供指令的指令快取610。分支預測器605耦接至指令快取610。須注意,指令快取610可進一步耦接至其它階的快取記憶體,諸如L2快取(為易於說明而未顯示於圖6)。依次,指令解碼器615提供經解碼的指令給發送佇列620供儲存及遞送至特定的執行管線。微碼ROM618耦接至指令解碼器615。
浮點管線630包括浮點暫存器檔案632,其可包括複數個特定位元數的架構暫存器,諸如128、256、或512位元。管線630包括在管線之多個執行單元其中之一上執行指令排程的浮點排程器634。實施例中顯示,此等執行單元包括ALU 635、混排單元636、及浮點加法器638。 依次,這些執行單元中所產生的結果可被提供回緩衝器及/或暫存器檔案632的暫存器。當然須瞭解,雖然只顯示了少數這幾個執行單元例,但在其它實施例中可存在有附加或不同的浮點執行單元。
整數管線640也在提供之列。實施例中顯示,管線640包括整數暫存器檔案642,其可包括複數個特定位元數的複數個架構暫存器,諸如128或256位元。管線640包括整數排程器644,為管線中複數個執行單元其中之一中的執行來排程指令。實施例中顯示,此等執行單元包括ALU 645、移位器單元646、及跳躍執行單元648。依次,這些執行單元中所產生的結果可被提供回緩衝器及/或暫存器檔案642的暫存器。當然須瞭解,雖然只顯示了少數這幾個執行單元例,但在其它實施例中可存在有附加或不同的整數執行單元。
記憶體執行排程器650可為位址產生單元652中的執行來排程記憶體操作,其也耦接至TLB654。如所見,這些結構可耦接至資料快取660,其可以是L0及/或L1資料快取,其依次耦接至快取記憶體階層中的額外層級,包括L2快取記憶體。
為支援亂序執行,除了重排序緩衝器680之外,可提供分配器/更名器670,其被組構成重排序亂序執行的指令以便循序止用。雖然圖6中顯示此特定的管線架構,但須瞭解,其可以有很多的衍生與替代。
須注意,在具有非對稱核心的處理器中,諸如按照圖 5及6之微架構的處理器,工作負荷會基於電力管理之原因在這些核心之間動態地調換,雖然這些核心具有不同的管線設計與深度,但都是相同或相關的ISA。此種動態的核心調換可按對於使用者應用程式透明的方式實施(且內核也是如此)。
雖然為了易於說明而未顯示於圖6,但在一些實施例中,核心600可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,核心600可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
現參考圖7,圖中的方塊圖顯示按照又一實施例之處理器核心的微架構。如圖7之說明,核心700可包括以極低功耗水準執行的多級循序管線。如這樣的例中,處理器700可具有按照ARM Cortex A53(其設計可得自ARM Holdings,LTD.,Sunnyvale,CA)的微架構。在實施中,可提供8級管線,其被組構成執行32位元與64位元的碼。核心700包括被組構成可提取指令,並將指令提供給可解碼指令之解碼單元715的提取單元710,例如,特定ISA的巨集指令,諸如ARMv8 ISA。另須注意,佇列730可耦接至解碼單元715用以儲存經解碼的指令。經解碼的指令被提供給發送邏輯725,經解碼的指令在此被發送給多個執行單元中之被指定的執行單元。
進一步參考圖7,發送邏輯725可將指令發送給多個執行單元其中之一。在所顯示的實施例中,這些執行單元包括整數單元735、乘法單元740、浮點/向量單元750、 雙發送單元760、及載入/儲存單元770。這些不同執行單元的結果可提供給寫回單元780。須瞭解,雖然為易於說明只顯示單個寫回單元,但在一些實施例中,可有與每一個執行單元相關聯之分開的寫回單元。此外,須注意,雖然圖7中所顯示的每一個單元與邏輯是以高階來表示,但特定的實施可包括更多或不同的結構。使用具有如圖7之管線之一或多個核心所設計的處理器可實施成很多不同的終端產品,其範圍從行動裝置到伺服器系統。
雖然為了易於說明而未顯示於圖7,但在一些實施例中,核心700可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,核心700可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
現參考圖8,圖中的方塊圖顯示按照又一實施例之處理器核心的微架構。如圖8之說明,核心800可包括多級多發送亂序管線,用以在極高的效能水平執行(在比圖7之核心700高的功耗位準下發生)。在此例中,處理器800可具有按照ARM Cortex A57設計的微架構。在實施中,可提供15(或更多)級的管線,其被組構成執行32位元及64位元的碼。此外,該管線可提供3(或更大)寬度及3(或更大)發送操作。核心800包括被組構成可提取指令,並將指令提供給可解碼該等指令之解碼器/更名器/配送器815的提取單元810,例如,ARMv8指令集架構的巨集指令,更名暫存器參考該等指令,並將指令配送給(最終)被選擇的執行單元。經解碼的指令可被儲存 在佇列825中。須注意,雖為易於說明而圖8中只顯示了單佇列結構,但須瞭解,可為多種不同類型執行單元的每一個提供單獨的佇列。
圖8中亦顯示發送邏輯830,儲存在佇列825中之經解碼的指令從其發送至被選擇執行單元。發送邏輯830也可在特定的實施例中實施,發送邏輯830耦接至具有單獨發送邏輯之多種不同類型的執行單元。
經解碼的指令可發送到多執行單元中的指定單元。在所示的實施例中,這些執行單元包括一或多個整數單元835、乘法單元840、浮點/向量單元850、分支單元860、及載入/儲存單元870。在實施例中,浮點/向量單元850可被組構成處置128或256位元的SIMD或向量資料。此外,浮點/向量單元850可實施IEEE-754雙精度的浮點運算。這些不同執行單元的結果可提供給寫回單元880。須注意,在一些實施中,每一個執行單元可與單獨的寫回單元相關聯。此外,須瞭解,雖然圖8中的每一個單元與邏輯是以高階來表示,但特定的實施可包括多個或不同的結構。
須注意,在具有不對稱核心的處理器中,諸如按照圖7與8之微架構,工作負荷會基於電力管理之原因在這些核心之間動態地調換,雖然這些核心具有不同的管線設計與深度,但都是相同或相關的ISA。此種動態的核心調換可按對於使用者應用程式透明的方式實施(且內核也是如此)。
雖然為了易於說明而未顯示於圖8,但在一些實施例中,核心800可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,核心800可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
使用具有如圖5-8其中任一或多樣管線之一或多個核心所設計的處理器可實施成很多不同的終端產品,其範圍從行動裝置到伺服器系統。現參考圖9,圖中顯示按照本發明另一實施例之處理器的方塊圖。在圖9的實施例中,處理器900可以是包括有多個域的SoC,每一個域都被控制在各自獨立的工作電壓與工作頻率下操作。如特定的說明例,處理器900可以是Intel® Architecture CoreTM式的處理器,諸如i3、i5、i7,或是可從Intel公司獲得的其它這類的處理器。不過,諸如可從加州Sunnyvale之Advanced Micro Devices(AMD)公司獲得的其它低功率處理器,ARM Holdings公司的ARM式設計,或這些公司的授權,或來自加州Sunnyvale之MIPS Technologies之MIPS式設計,或它們的授權或採用的都可取代而出現於其它實施例中,諸如Apple A7處理器、Qualcomm Snapdragon處理器、或德州儀器的OMAP處理器。此SoC可用於低功率系統,諸如智慧型手機、平板電腦、平板電話電腦、UltrabookTM電腦,或其它可攜式計算裝置。
圖9是以高階來顯示,處理器900包括複數個核心單元9100-910n。每一個核心單元可包括一或多個處理器核心,一或多個快取記憶體及其它電路。每一個核心單元 910可支援一或多種指令集(例如,x86指令集(含有一些延伸,新版本中已加入);MIPS指令集;ARM指令集(含有選用的附加延伸,諸如NEON)),或其它指令集,或這些指令集的組合。須注意,在一些核心單元可以是異質資源(例如,不同的設計)。此外,每一個這種核心可耦接至快取記憶體(未顯示),在實施例中可以是共用階(L2)的快取記憶體。非揮發性儲存器930可用來儲存各種程式及其它資料。例如,此儲存器可用來儲存至少部分的微碼、啟動資訊,諸如BIOS、其它的系統軟體等。
每一個核心單元910也可包括介面,諸如匯流排介面單元,使能夠與處理器的附加電路互連。在實施例中,每一個核心單元910耦接至同調結構,其作用如同主快取同調晶粒上互連,其依次耦接到記憶體控制器935。依次,記憶體控制器935控制與記憶體的通訊,諸如DRAM(圖9中未顯示以易於說明)。
除了核心單元,處理器內也存在有附加的處理器引擎,包括至少一個圖形單元920,其可包括用以實施圖形處理的一或多個圖形處理單元(GPU),也可以在圖形處理器上執行通用的操作(所謂的GPGPU操作)。此外,可存在有至少一個影像訊號處理器925。訊號處理器925可被組構成處理接收自一或多個捕捉裝置之進入的影像資料,其可在SoC的內部或在晶片外部。
也可存在有其它的加速器。在圖9的說明中,視訊編 碼器950可實施編碼操作,包括編碼與解碼視訊資訊,例如,提供硬體加速器以支援高解析的視訊內容。可進一步配置顯示控制器955以加速顯示操作,包括支援系統的內部與外部顯示。此外,也可存在有安全處理器945用以實施安全操作,諸如安全啟動操作,各種加密操作等。
經由電力管理器940,每一個單元可具有它的功耗控制,其可包括用以實施本文所描述之各種電力管理技術的控制邏輯。
在一些實施例中,SoC 900可另包括耦接至同調結構的非同調結構,用以耦接各種周邊裝置。一或多個介面960a-960d使能夠與晶片外的裝置通訊。此種通訊可按照各種的通訊協定,在眾多類型的通訊協定之中,諸如PCIeTM、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI。雖然圖9的實施例是以此高階來顯示,但須瞭解,本發明的範圍並不限於此方面。
雖然為了易於說明而未顯示於圖9,但在一些實施例中,SoC 900可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,SoC 900可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
現參考圖10,圖中顯示代表SoC的方塊圖。在所示的實施例中,SoC 1000可以是為經最佳化之低電力操作所組構的多核心SoC,用於結合到智慧型手機或其它低電力裝置內,諸如平板電腦或其它可攜的計算裝置。舉例來說,SoC 1000可使用非對稱或不同類型的核心來實施, 諸如較高功率及/或低功率核心的組合,例如,亂序核心與循序核心。在不同的實施例中,這些核心可基於Intel® ArchitectureTM設計或ARM架構設計。在另些實施例中,在特定的SoC中可混合Intel與ARM核心來實施。
如圖10所見,SoC 1000包括具有複數個第一核心10120-10123的第一核心域1010。在例中,這些核心可以是低功率核心,諸如循序核心。在一實施例中,這些第一核心可用ARM Cortex A53核心來實施。依次,這些核心耦接至核心域1010的快取記憶體1015。此外,SoC 1000包括第二核心域1020。在圖10的說明中,第二核心域1020具有複數個第二核心10220-10223。在例中,這些核心可以是功耗高於第一核心1012的核心。在實施例中,第二核心可以是亂序核心,這些核心可用ARM Cortex A57核心來實施。依次,這些核心耦接至核心域1020的快取記憶體1025。須注意,雖然圖10所示例中的每個域中包括有4個核心,但須瞭解,在其它例中,給定的域中可存在有更多或較少的核心。
進一步參考圖10,也提供圖形域1030,其可包括一或多個圖形處理單元(GPU),被組構成獨立地執行繪圖工作,例如,由核心域1010與1020的一或多個核心所提供。舉例來說,GPU域1030除了提供圖形與顯示呈現操作,可用來提供各種尺寸之螢幕的顯示支援。
如圖中所見,各種不同的域耦接至同調互連1040,其在實施例中可以是快取同調互連結構,其依次耦接至整 合式記憶體控制器1050。同調互連1040可包括共享快取記憶體,諸如L3快取。在實施例中,記憶體控制器1050可以是直接記憶體控制器,用來提供與晶片外記憶體通訊的多個通道,諸如DRAM的多個通道(為易於圖10的說明而未顯示)。
在不同的例中,核心域的數量為可變。例如,關於適合結合到行動計算裝置的內低功率SoC,可存在諸如圖10所示之數量有限的核心域。此外,在此種低功率的SoC中,包括有較高功率之核心的核心域1020可具有較少量的此種核心。例如,在一實施中,可配置2個核心1022使能夠在降低的功耗位準下操作。此外,不同的核心域也可耦接至中斷控制器,使工作負荷能夠在不同的域之間動態地換置。
在另些其它的實施例中,可存在有較多的核心域以及附加的選用性IP邏輯,因為SoC可比例放大到較高的性能(及功率)水準,用以結合到其它的計算裝置內,諸如桌上型電腦、伺服器、高性能計算系統、基地台等。舉此一例來說,可配置每一個都具有指定數量之亂序核心的4個核心域。更進一步,除了選用的GPU支援(舉例來說,可以採用GPGPU形式)之外,一或多個加速器可對特定的功能(例如,網頁服務、網路處理、交換機等)提供最佳化的硬體支援。此外,可存在有輸入/輸出介面以便將此等加速器耦接至晶片外的組件。
雖然為了易於說明而未顯示於圖10,但在一些實施 例中,SoC 1000可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,SoC 1000可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
現參考圖11,圖中顯示SoC另一例的方塊圖。在圖11的實施例中,SoC 1100可包括高效能用於多媒體應用程式、通訊與其它功能的各種電路。就此而論,SoC 1100適合結合到各種可攜式及其它裝置,諸如智慧型手機、平板電腦、智慧型電視等。在例中顯示,SoC 1100包括中央處理單元(CPU)域1110。在實施例中,CPU域1110可存在有複數個個別的處理器核心。舉一例來說,CPU域1110可以是具有4個多執行緒核心的四核心處理器。此等處理器可以是均質或異質處理器,例如,低功率與高功率處理器核心的混合。
依次,配置GPU域1120以便在一或多個GPU中實施預先的圖形處理來處置圖形與計算API。除了多媒體指令執行期間所發生的預先計算之外,DSP單元1130還可提供一或多個低功率DSP用於處置低耗電的多媒體應用程式,諸如音樂的播放、音頻/視訊等。依次,通訊單元1140包括各種組件以提供經由各種無線協定的連接性,諸如蜂巢式通訊(包括3G/4G LTE)、無線區域技術,諸如藍牙、IEEE 802.11等。
另者,多媒體處理器1150可用來實施捕捉與播放高清晰度視訊與音頻內容,包括使用者姿勢的處理。感測器 單元1160可包括複數個感測器及/或感測器控制器,用以介接存在於給定平台中的各種的晶片外部感測器。影像訊號處理器1170可配置一或多個獨立的ISP,用以實施關於平台之一或多個攝影機所捕捉之內容的影像處理,包括靜止與視頻攝影機。
顯示處理器1180可提供與特定像素密度之高清晰顯示器之連接的支援,包括以無線傳遞內容供此顯示器播放的能力。另者,位置單元1190可包括用以支援多個GPS衛星的GPS接收器,以使用此GPS接收器獲得高精度的定位資訊提供給應用程式。須瞭解,雖然圖11的例中顯示此特定的組件組,但可有很多的變形與替代。
雖然為了易於說明而未顯示於圖11,但在一些實施例中,SoC 1100可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,SoC 1100可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
現參考圖12的方塊圖,其顯示可使用實施例的系統例。如所見,系統1200可以是智慧型手機或其它無線通訊器。基頻處理器1205被組構成對要從系統發送或被系統接收之通訊訊號實施各種訊號處理。依次,基頻處理器1205被耦接至應用程式處理器1210,其可以是系統的主CPU,用以執行OS及其它系統軟體以及使用者應用程式,諸如很多習知的社交媒體與多媒體應用程式。應用程式處理器1210可進一步被組構來為裝置實施各種其它的 計算操作。
依次,應用程式處理器1210耦接至使用者介面/顯示器1220,例如,觸控螢幕顯示器。此外,應用程式處理器1210可耦接至記憶體系統,包括非揮發性記憶體,即快閃記憶體1230與系統記憶體,即動態隨機存取記憶體(DRAM)1235。如進一步所見,應用程式處理器1210進一步耦接至捉捕裝置1240,諸如一或多個影像捉捕裝置,其可記錄視訊及/或靜止影像。
仍參考圖12,包含用戶識別模組及可能有安全儲存器與密碼處理器的通用積體電路卡(UICC)1245也耦接至應用程式處理器1210。系統1200可進一步包括安全處理器1250,其可耦接至應用程式處理器1210。複數個感測器1225也耦接至應用程式處理器1210,使能夠輸入各種感測資訊,諸如加速器與其它環境資訊。音頻輸出裝置1295也提供輸出聲音的介面,例如,語音通訊的形式,播放或串流音頻資料等。
如進一步的說明,配置近場通訊(NFC)無接觸介面1260,其經由NFC天線1265在NFC近距離中通訊。雖然圖12中顯示獨立的天線,但須瞭解,在一些實施中,可配置一個天線或不同組的天線,使能夠做到各種的無線功能。
電力管理積體電路(PMIC)1215耦接至應用程式處理器1210用以實施平台位準電力管理。為此目的,PMIC 1215可發送電力管理要求給應用程式處理器1210以按需 要進入特定的低電力狀態。此外,PMIC 1215也可根據平台的限制來控制系統1200之其它組件的電力位準。
為使通訊能夠發送與接收,有各種的電路耦接於基頻處理器1205與天線1290之間。特別是,可存在有射頻(RF)收發器1270與無線區域網路(WLAN)收發器1275。通常,RF收發器1270可用來按照給定的無線通訊協定接收與發射無線資料及電話,諸如按照諸如分碼多重存取(CDMA)、全球行動通訊系統(GSM)、長程演進(LTE)的3G或4G無線通訊協定或其它協定。此外,可存在有GPS感測器1280。也可提供其它的無線通訊,諸如接收或發射無線電訊號,例如,AM/FM與其它訊號。此外,經由WLAN收發器1275也可實現諸如按照藍牙標準或IEEE 802.11標準(諸如IEEE 802.11a/b/g/n)的本地無線通訊。
雖然為了易於說明而未顯示於圖12,但在一些實施例中,系統1200可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,系統1200可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
現參考圖13的方塊圖,其顯示可使用實施例的另一系統例。在圖13的說明中,系統1300可以是低電力的行動系統,諸如平板電腦、2:1平板、平板電話或其它可轉換或獨立式平板系統。如圖之說明,SoC 1310係存在於且被組構當成裝置的應用程式處理器來操作。
各種的裝置可耦接至SoC 1310。在說明的圖中顯示,記憶子系統包括耦接至SoC 1310的快閃記憶體1340與DRAM 1345。此外,觸控面板1320耦接至SoC 1310,用以經由觸摸提供顯示能力與使用者輸入,包括在觸控面板1320的顯示器上提供虛擬鍵盤。為提供有線裝置連接性,SoC 1310耦接至乙太網路介面1330。周邊集線器1325耦接至SoC 1310使能夠與各種周邊裝置介接,諸如可藉由任何各種不同的埠或其它連接器耦接至系統1300。
除了SoC 1310內的內部電力管理電路及功能之外,PMIC 1380耦接至SoC 1310以提供基於平台的電力管理,例如,根據系統是由電池1390或AC電源經由AC轉接器1395來供電。除了此基於電源的電力管理之外,PMIC 1380可進一步根據環境與使用狀況來實施平台電力管理活動。另者,PMIC 1380可傳遞控制與狀態資訊給SoC 1310,用來致使SoC 1310內的各種電力管理動作。
仍參考圖13,為提供無線能力,WLAN單元1350耦接至SoC 1310並依次耦接到天線1355。在實施中,WLAN單元1350可按照一或多種無線協定提供通訊,包括IEEE 802.11協定、藍牙協定、或任何其它無線協定。
如進一步之說明,複數個感測器1360可耦接至SoC 1310。這些感測器可包括各種的加速器、環境及其它感測器,包括使用者姿勢感測器。最後,音頻編碼解碼器1365被耦接至SoC 1310以提供與音頻輸出裝置1370的 介接。當然,須瞭解,雖然圖13以此特定的實施來顯示,但可有很多的衍生與替代。
雖然為了易於說明而未顯示於圖13,但在一些實施例中,系統1300可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,系統1300可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
現參考圖14,圖中的方塊圖代表電腦系統1400,諸如筆記型電腦、UltrabookTM或其它外形因數小的系統。在一實施例中,處理器1410包括微處理器、多核心處理器、多執行緒處理器、極低電壓處理器、內嵌式處理器、或其它已知的處理元件。在說明的實施中,處理器1410做為主處理單元與中央集線器,用於與系統1400之很多各種不同的組件通訊。在一例中,處理器1410係實施為SoC。
在一實施例中,處理器1410與系統記憶體1415通訊。如說明例,系統記憶體1415係經由多個記憶裝置或模組來實施,以提供指定量的系統記憶體。
為提供資訊的永久儲存,諸如資料、應用程式、一或多個作業系統等,大量儲存器1420也可耦接至處理器1410。在各不同的實施例中,為能夠設計出既薄又輕的系統,並增進系統的回應性,此大量儲存器可用SSD來實施,或該大量儲存器以使用硬式磁碟機(HDD)為主,再加上小量的SSD儲存器做為SSD快取來實施,以便在電 力下降期間,能夠非揮發性地儲存上下文狀態及其它這類資訊,使得在系統活動的再啟動時能快速開啟電力。亦如圖14所顯示,快閃裝置1422可耦接至處理器1410,例如,經由序列周邊介面(SPI)。此快閃裝置可提供系統軟體的非揮發性儲存,包括基本輸入/輸出軟體(BIOS)以及系統的其它韌體。
系統1400內可存在有各種不同的輸入/輸出(I/O)裝置。特別顯示於圖14之實施例中的是顯示器1424,其可以是高清LCD或LED面板,其進一步提供觸控螢幕1425。在一實施例中,顯示器1424可經由顯示器互連來耦接至處理器1410,其可用高性能圖形互連來實施。觸控螢幕1425可經由另一互連來耦接至處理器1410,其在實施例中可以是I2C互連。如圖14中進一步所示,除了觸控螢幕1425之外,藉由觸摸方式的使用者輸入也可經由觸控板1430來發生,其可被組構在機殼內,並如觸控螢幕1425般地耦接至相同的I2C互連。
為了感知計算與其它目的,系統中可存在有各種不同的感測器,且以不同的方式耦接至處理器1410。某些慣性與環境感測器可經由感測器集線器1440耦接至處理器1410,例如,經由I2C互連。在圖14所顯示的實施例中,這些感測器可包括加速器1441、環境光感測器(ALS)1442、羅盤1443、及陀螺儀1444。其它的環境感測器可包括一或多個熱感測器1446,在一些實施例中,其經由系統管理匯流排(SMBus)匯流排耦接至處理 器1410。
亦如圖14中所見,各種的周邊裝置經由低腳數(LPC)互連耦接至處理器1410。在所示的實施例中,各種組件可經由內建的控制器1435耦接。這些組件可包括鍵盤1436(例如,經由PS2介面耦接)、風扇1437、及熱感測器1439。在一些實施例中,觸控板1430也經由PS2介面耦接至內建的控制器1435。此外,諸如按照信賴計算小組(Trusted Computing Group;TCG)2003年10月2日之TPM規範1.2版之信賴平台感測器模組(trusted platform module;TPM)1438的安全處理器也經由此LPC互連耦接至處理器1410。
系統1400可用各種方式與外部裝置通訊,包括以無線方式。在圖14所顯示的實施例中存在有各種無線模組,每一個都對應於為特定無線通訊協定所組構的無線電。一種用於諸如近場之短程無線通訊的方法是經由NFC單元1445,在一實施例中其可經由SMBus與處理器1410通訊。須注意,經由此NFC單元1445,裝置彼此緊密相鄰才可通訊。
另如圖14中所見,附加的無線單元可包括其它的短程無線引擎,包括WLAN單元1450與藍牙單元1452。使用WLAN單元1450,可實現按照IEEE 802.11標準的Wi-FiTM通訊,而經由藍牙單元1452,可發生經由藍牙協定的短程通訊。這些單元例如經由USB鏈結或通用不同步接收發射器(UART)鏈結與處理器1410通訊。或這些單元 可經由按照PCIeTM協定或其它此種協定(諸如串列資料輸入/輸出(SDIO)標準)的互連與處理器1410耦接。
此外,例如按照蜂巢式或其它無線廣域協定的無線廣域通訊可經由WWAN單元1456發生,其依次耦接至用戶辨識模組(SIM)1457。此外,為能夠接收與使用位置資訊,也可存在有GPS模組1455。須注意,在圖14所顯示的實施例中,WWAN單元1456與諸如照相機模組1454的整合式捕捉裝置可經由特定的USB協定通訊,諸如USB 2.0或3.0鏈結、或UART、或I2C協定。
整合式照相機模組1454可結合在機蓋內。為提供音頻的輸入與輸出,音頻處理器可經由數位訊號處理器(DSP)1460來實施,其可經由高解析音頻(HDA)鏈結耦接至處理器1410。同樣地,DSP 1460可與整合式編碼器/解碼器(CODEC)及放大器1462通訊,其依次耦接至可在機殼內實施的輸出喇叭1463。同樣地,可耦接放大器/CODEC 1462以接收來自麥克風1465的音頻輸入,其在實施例中是經由雙陣列麥克風(諸如數位式麥克風陣列)來實施以提供高品質音頻輸入,使系統內能夠以聲音控制各項操作。亦須注意,音頻輸出可從放大器/CODEC 1462提供給耳機插孔1464。雖然圖14的實施例是以這些特定的組件來顯示,但須瞭解,本發明的範圍並不限於此方面。
雖然為了易於說明而未顯示於圖14,但在一些實施例中,系統1400可包括前文參考圖1A-1C所描述的消去 監測器120。此外,在一些實施例中,系統1400可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
實施例可在很多不同類型的系統中實施。現參考圖15,圖中顯示按照本發明之實施例之系統的方塊圖。如圖15所示,多處理器系統1500係點對點互連系統,且包括經由點對點互連1550所耦接的第一處理器1570與第二處理器1580。如圖15所示,每一個處理器1570與1580可以是包括第一與第二處理器核心(即處理器核心1574a與1574b和處理器核心1584a與1584b)的多核心處理器,當然,處理器中可能存在有更多的核心。每一個處理器可包括PCU或其它的電力管理邏輯,用以實施如本文所描述之基於處理器的電力管理。
仍參考圖15,第一處理器1570另包括記憶體控制器集線器(MCH)1572與點對點(P-P)介面1576、1578。同樣地,第二處理器1580包括MCH 1582與P-P介面1586、1588。如圖15所示,MCH 1572、1582將處理器耦接至各自的記憶體,即,記憶體1532與記憶體1534,其可以是系統記憶體(例如,DRAM)的一部分,局部地附接於各自的處理器。第一處理器1570與第二處理器1580可分別經由P-P互連1562、1564耦接至晶片組1590。如圖15所示,晶片組1590包括P-P介面1594與1598。
此外,晶片組1590包括介面1592,藉由P-P互連1539耦接晶片組1590與高性能圖形引擎1538。依次,晶 片組1590經由介面1596耦接至第一匯流排1516。如圖15所示,各種的輸入/輸出(I/O)裝置1514連同匯流排橋接器1518耦接至第一匯流排1516,匯流排橋接器將第一匯流排1516耦接到第二匯流排1520。在一實施例中,可耦接至第二匯流排1520的各種裝置包括例如,鍵盤/滑鼠1522、通訊裝置1526、及資料儲存單元1528,諸如磁碟機或其它大量儲存裝置,其可包括碼1530。此外,音頻I/O 1524可耦接至第二匯流排1520。實施例可結合到其它類型的系統內,包括行動裝置,諸如智慧型手機、平板電腦、易網型筆電、UltrabookTM、等。
雖然為了易於說明而未顯示於圖15,但在一些實施例中,系統1500可包括前文參考圖1A-1C所描述的消去監測器120。此外,在一些實施例中,系統1500可實施前文參考圖1A-1C及圖2所描述的一些或全部組件及/或功能。
實施例可用碼來實施,且可儲存在非臨時性的儲存媒體上,媒體上儲存有指令,這些指令可用來程式一系統來實施該等指令。儲存媒體包括但不限於任何類型的碟片,包括軟碟、光碟、固態硬碟(SSD)、光碟唯讀記憶體(CD-ROM)、可複寫光碟(CD-RW)、及磁光碟;半導體裝置,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式唯讀記憶 體(EEPROM)、磁或光卡、或適合用來儲存電子指令之任何其它類型的媒體。
以下的條款及/或例子屬於另些實施例。
在一例中,處理器包含複數個核心,至少一個核心包括消去監測單元。消去監測單元包含電路用以:檢測核心中之浮點(FP)指令的執行,其中,FP指令之該執行使用一組FP輸入,並產生FP輸出;決定與輸入到FP指令之該組FP輸入相關聯的最大指數值;最大指數值減去FP輸出的指數值以得到指數差;以及,回應該指數差符合或超過一臨限位準的決定,增加消去事件計數。
在例中,消去監測單元進一步包含用於儲存消去事件計數的硬體暫存器。在例中,處理器另包含剖析應用程式用以:從消去監測單元的硬體暫存器得到消去事件計數;以及根據所得到的消去事件計數來決定目標應用程式的特性。在例中,剖析應用程式進一步使用與消去事件計數相關聯的時間資訊來決定目標應用程式的特性。在例中,剖析應用程式進一步使用與消去事件計數相關聯的程式位置資訊來決定目標應用程式的特性。
在例中,FP指令係FP減法指令。
在例中,FP指令係FP加法指令。
在例中,FP指令係FP積和熔加(fused multiply-add;FMA)指令。
在一例中,方法包含:藉由包括在處理器中的消去監測單元來決定與輸入到FP指令之複數個浮點(FP)輸入 相關聯的最大指數值,其中,FP指令係用來產生FP輸出;藉由消去監測單元來決定FP輸出與最大指數值之間的差;回應該差超過臨限位準之決定,遞增消去事件計數;以及,將消去事件計數儲存到包括在處理器中的硬體暫存器內。
在例中,該方法進一步包含:藉由剖析應用程式讀取處理器之硬體暫存器中的消去事件計數;以及,藉由剖析應用程式使用消去事件計數來決定目標應用程式的一或多項特性。在例中,該方法進一步包含藉由剖析應用程式使用與消去事件計數相關聯的時間資訊來決定目標應用程式的一或多項特性。在例中,該方法進一步包含藉由剖析應用程式使用與消去事件計數相關聯的程式位置資訊來決定目標應用程式的一或多項特性。
在例中,FP指令係FP減法指令或FP加法指令,且決定與複數個FP輸入相關聯之最大指數值包含決定兩個指令輸入中的最大指數值。
在例中,FP指令係FP積和熔加(FMA)指令,且決定與複數個FP輸入相關聯的最大指數值包含決定由第一個FP輸入與另兩個FP輸入之乘積所組成的輸入組中的最大指數值。
在一例中,機器可讀取媒體上儲存有資料,其如果被至少一部機器使用,致使該至少一部機器製造用來實施以上任一例之方法的至少一個積體電路。
在一例中,用於處理指令的設備被組構成實施以上任 一例的方法。
在一例中,系統包含包括有消去監測單元的處理器,且有系統記憶體耦接至處理器。消去監測單元回應浮點(FP)指令之執行:決定與輸入到FP指令之一組輸入相關聯的最大指數值;決定FP指令之輸出的指數值;最大指數值減去輸出的指數值以計算指數差;當指數差超過臨限位準時,增加消去事件計數。
在例中,消去監測單元包含用於儲存消去事件計數的硬體暫存器。在例中,系統記憶體用來儲存剖析應用程式與目標應用程式,且剖析應用程式可執行來:讀取硬體暫存器中的消去事件計數;以及,使用消去事件計數來決定目標應用程式的一或多個特性。在例中,剖析應用程式另可執行來使用與消去事件計數相關聯的時間資訊與程式位置資訊至少其中一者來決定目標應用程式的特性。
在例中,剖析應用程式進一步可執行來根據該目標應用程式的特性提供目標應用程式的分析。
在例中,FP指令係FP減法指令。
在例中,FP指令係FP加法指令。
在例中,FP指令係FP積和熔加(FMA)指令。
須瞭解,以上的例子可有各種的組合。實施例可用於很多不同類型的系統。例如,在一實施例中,可配置通訊裝置來實施本文所描述的各種方法與技術。當然,本發明的範圍不限於通訊裝置,代之以其它實施例可與用於處理指令之其它類型的設備有關,或一或多個包括有指令的機 器可讀取媒體,該等指令回應計算裝置之執行,致使該裝置實行本文所描述的一或多個方法與技術。
本說明書全文中參考“一實施例”或“實施例”意指與實施例有關之描述中特定的特徵、結構、或性能,係包括在本發明所包含之至少一項的實施中。因此,所出現的“一實施例”或“在實施例中”等片語,不必然意指相同的實施例。此外,特定的特徵、結構、或性能可用所說明之特定實施例以外的其它適合形式來建立,且所有這些形式都可包含在本申請案的主張範圍內。
雖然已關於數量有限的實施例描述了本發明,但熟悉此領域的習知技藝者將可從這些實施例了解到很多的修改與衍生。所附申請專利範圍涵蓋所有這些修改與衍生,皆落入本發明的真正精神與範圍內。
100:系統
105:系統記憶體
107:剖析器
109:目標應用程式
110:處理器
115:處理器核心
120:消去監測器

Claims (20)

  1. 一種用於使用浮點運算之硬體消去監測器的處理器,包含:複數個核心,至少一個核心包括專用硬體消去監測電路用以:檢測該至少一個核心中之浮點(FP)指令的執行,其中,該FP指令之該執行使用一組FP輸入,並產生FP輸出;決定與該FP指令所使用之該組FP輸入相關聯的最大指數值;該最大指數值減去該FP輸出的指數值以得到指數差;回應該指數差符合或超過一臨限位準之決定,增加消去事件計數;儲存該消去事件計數在包括在該至少一個核心中的至少一個硬體暫存器中;以及回應該消去事件計數超過臨限計數水準之決定,在處理器中導致異常以指示該臨限計數水準已被跨過。
  2. 如申請專利範圍第1項之處理器,其中,該專用硬體消去監測電路進一步儲存多個程式位置在該至少一個硬體暫存器中,其中,每一個程式位置與唯一的消去事件相關聯。
  3. 如申請專利範圍第2項之處理器,另包含剖析應用程式,用以: 從該專用硬體消去監測電路的該至少一個硬體暫存器得到該多個程式位置及該消去事件計數;以及根據從該至少一個硬體暫存器得到的該多個程式位置及該消去事件計數來決定目標應用程式的特性。
  4. 如申請專利範圍第3項之處理器,其中,該專用硬體消去監測電路進一步儲存多個時間值在該至少一個硬體暫存器中,其中,每一個時間值與唯一的消去事件相關聯;以及其中,該剖析應用程式進一步使用儲存在該至少一個硬體暫存器中的該多個程式位置、該消去事件計數、以及該多個時間值來決定該目標應用程式的該等特性。
  5. 如申請專利範圍第2項之處理器,其中,該專用硬體消去監測電路進一步儲存多個時間值在該至少一個硬體暫存器中,其中,每一個時間值與唯一的消去事件相關聯;以及其中,剖析應用程式使用儲存在該至少一個硬體暫存器中的該多個時間值來決定目標應用程式的特性。
  6. 如申請專利範圍第1項之處理器,其中,該專用硬體消去監測電路進一步儲存多個指數差在該至少一個硬體暫存器中,其中,每一個指數差與唯一的消去事件相關聯。
  7. 如申請專利範圍第1項之處理器,其中,該專用硬體消去監測電路進一步儲存多個平均消去大小在該至少一個硬體暫存器中,其中,每一個平均消去大小與唯一的 消去事件相關聯。
  8. 如申請專利範圍第1項之處理器,其中,該FP指令係FP積和熔加(fused multiply-add;FMA)指令,且其中,該專用硬體消去監測電路決定由第一個FP輸入與另兩個FP輸入之乘積所組成之輸入組中的最大指數值。
  9. 一種用於使用浮點運算之硬體消去監測器的方法,包含:藉由包括在處理器中的專用硬體消去監測電路來檢測浮點(FP)指令的執行;藉由該專用硬體消去監測電路來決定與輸入到FP指令之複數個FP輸入相關聯的最大指數值,其中,該FP指令係用來產生FP輸出;藉由該消去監測電路來決定該FP輸出的指數值與該最大指數值之間的差;藉由該消去監測電路來決定該差是否超過一臨限位準;回應該差超過該臨限位準之決定,遞增消去事件計數;將該消去事件計數儲存到包括在該處理器中的至少一硬體暫存器內;以及回應該消去事件計數超過臨限計數水準之決定,在該處理器中導致異常以指示該臨限計數水準已被跨過。
  10. 如申請專利範圍第9項之方法,其中,該方法進一步包含: 藉由該專用硬體消去監測電路儲存多個程式位置在該至少一個硬體暫存器中,其中,每一個程式位置與唯一的消去事件相關聯。
  11. 如申請專利範圍第10項之方法,其中,該方法進一步包含:藉由剖析應用程式讀取該處理器之該至少一個硬體暫存器中的該多個程式位置及該消去事件計數;以及藉由該剖析應用程式使用從該至少一個硬體暫存器讀取之該多個指數差及該消去事件計數來決定該目標應用程式的該一或多項特性。
  12. 如申請專利範圍第10項之方法,其中,該方法進一步包含:藉由該專用硬體消去監測電路儲存多個時間值在該至少一個硬體暫存器中,其中,每一個時間值與唯一的消去事件相關聯。
  13. 如申請專利範圍第12項之方法,其中,該方法另包含:藉由該剖析應用程式讀取該處理器之該至少一個硬體暫存器中的該多個時間值、該多個程式位置及該消去事件計數;以及藉由該剖析應用程式使用從該至少一個硬體暫存器讀取之該多個時間值、該多個程式位置、以及該消去事件計數來決定該目標應用程式的該一或多項特性。
  14. 如申請專利範圍第9項之方法,其中,該FP指 令係FP積和熔加(FMA)指令,且其中,決定與該複數個FP輸入相關聯的最大指數值包含決定由第一個FP輸入與另兩個FP輸入之乘積所組成之輸入組中的最大指數值。
  15. 一種用於使用浮點運算之硬體消去監測器的系統,包含:包含專用硬體消去監測電路的處理器,回應浮點(FP)指令之執行,該專用硬體消去監測電路:決定與輸入到FP指令之一組輸入相關聯的最大指數值;為該FP指令之輸出決定指數值;該最大指數值減去該輸出的該指數值以計算指數差;回應該指數差符合或超過臨限位準之決定:增加消去事件計數以回應該指數差超過臨限位準之決定,;儲存該消去事件計數在包括在該處理器中的至少一個硬體暫存器中;以及回應該消去事件計數超過臨限計數水準之決定,在該處理器中導致異常以指示該臨限計數水準已被跨過;以及系統記憶體耦接至該處理器。
  16. 如申請專利範圍第15項之系統,其中,該專用硬體消去監測電路進一步儲存多個程式位置在該至少一個硬體暫存器中,其中,每一個程式位置與唯一的消去事件 相關聯。
  17. 如申請專利範圍第16項之系統,其中,該系統記憶體係用於儲存剖析應用程式與目標應用程式,其中,該剖析應用程式可執行來:讀取該硬體暫存器中的該消去事件計數及該多個程式位置;以及使用該消去事件計數及該多個程式位置來決定該目標應用程式的一或多個特性。
  18. 如申請專利範圍第17項之系統,其中,該專用硬體消去監測電路進一步儲存多個時間值在該至少一個硬體暫存器中,其中,每一個時間值與唯一的消去事件相關聯;以及其中,該剖析應用程式進一步可執行來使用儲存在該至少一個硬體暫存器中的該多個時間值、該消去事件計數、以及該多個程式位置來決定該目標應用程式的該一或多個特性。
  19. 如申請專利範圍第15項之系統,其中,該剖析應用程式進一步可執行來:根據該目標應用程式的該一或多個特性提供該目標應用程式的分析。
  20. 如申請專利範圍第15項之系統,其中,該FP指令係FP積和熔加(FMA)指令,且其中,該專用硬體消去監測電路決定由第一個FP輸入與另兩個FP輸入之乘積所組成之輸入組中的最大指數值。
TW105136944A 2015-12-22 2016-11-11 用於使用浮點運算之硬體消去監測器的處理器、方法及系統 TWI769143B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/977,821 2015-12-22
US14/977,821 US20170177336A1 (en) 2015-12-22 2015-12-22 Hardware cancellation monitor for floating point operations

Publications (2)

Publication Number Publication Date
TW201730750A TW201730750A (zh) 2017-09-01
TWI769143B true TWI769143B (zh) 2022-07-01

Family

ID=59067053

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105136944A TWI769143B (zh) 2015-12-22 2016-11-11 用於使用浮點運算之硬體消去監測器的處理器、方法及系統

Country Status (5)

Country Link
US (1) US20170177336A1 (zh)
EP (1) EP3394719B1 (zh)
CN (1) CN108369495B (zh)
TW (1) TWI769143B (zh)
WO (1) WO2017112385A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409614B2 (en) 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
WO2020190807A1 (en) 2019-03-15 2020-09-24 Intel Corporation Systolic disaggregation within a matrix accelerator architecture
CN113396400A (zh) 2019-03-15 2021-09-14 英特尔公司 用于针对高速缓存操作提供层级开放划分扇区和可变扇区大小的系统和方法
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
EP4130988A1 (en) 2019-03-15 2023-02-08 INTEL Corporation Systems and methods for cache optimization
CN111176408B (zh) * 2019-12-06 2021-07-16 瑞芯微电子股份有限公司 一种SoC的低功耗处理方法和装置
US20220197634A1 (en) * 2020-12-21 2022-06-23 Intel Corporation Efficient divide and accumulate instruction when an operand is equal to or near a power of two

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140052970A1 (en) * 2010-01-08 2014-02-20 International Business Machines Corporation Opcode counting for performance measurement

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3544846B2 (ja) * 1997-02-13 2004-07-21 株式会社東芝 論理回路及び浮動小数点演算装置
US9223751B2 (en) * 2006-09-22 2015-12-29 Intel Corporation Performing rounding operations responsive to an instruction
US8499017B2 (en) * 2009-08-12 2013-07-30 Arm Limited Apparatus and method for performing fused multiply add floating point operation
US8171340B2 (en) * 2009-12-11 2012-05-01 Red Hat, Inc. Software performance counters
US8464035B2 (en) * 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state
US8667042B2 (en) * 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
TWI524265B (zh) * 2011-06-30 2016-03-01 艾特拉股份有限公司 浮點資料之壓縮
US8514999B2 (en) * 2011-12-06 2013-08-20 International Business Machines Corporation Floating-point event counters with automatic prescaling
US8909690B2 (en) * 2011-12-13 2014-12-09 International Business Machines Corporation Performing arithmetic operations using both large and small floating point values
CN103426145A (zh) * 2012-05-23 2013-12-04 中国科学院声学研究所 一种基于多分辨分析的合成孔径声纳相干斑噪声抑制方法
US9110713B2 (en) * 2012-08-30 2015-08-18 Qualcomm Incorporated Microarchitecture for floating point fused multiply-add with exponent scaling
US9152382B2 (en) * 2012-10-31 2015-10-06 Intel Corporation Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values
US9292288B2 (en) * 2013-04-11 2016-03-22 Intel Corporation Systems and methods for flag tracking in move elimination operations
CN105814489B (zh) * 2013-09-09 2017-10-27 Asml荷兰有限公司 用于计算结构的电磁散射性质和近似结构的重构的方法和设备
US9817662B2 (en) * 2015-10-24 2017-11-14 Alan A Jorgensen Apparatus for calculating and retaining a bound on error during floating point operations and methods thereof
US10114642B2 (en) * 2015-12-20 2018-10-30 Intel Corporation Instruction and logic for detecting the floating point cancellation effect

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140052970A1 (en) * 2010-01-08 2014-02-20 International Business Machines Corporation Opcode counting for performance measurement

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
期刊 An, D., Blue, R., Lam, M., Piper, S., & Stoker, G. (2008). FPInst: Floating Point Error Analysis Using Dyninst. 2008/12/15 1 1 1 1 1 1 *
期刊 Benz, F., Hildebrandt, A., & Hack, S. (2012). A dynamic program analysis to find floating-point accuracy problems. ACM SIGPLAN Notices, 47(6), 453-462. 2012/06/30 1 1 1 1 1 1; *
期刊 Lam, M. O., Hollingsworth, J. K., & Stewart, G. W. (2013). Dynamic floating-point cancellation detection. Parallel Computing, 39(3), 146-155. 2013/03/31 1 1 1 1 1 1; *

Also Published As

Publication number Publication date
TW201730750A (zh) 2017-09-01
US20170177336A1 (en) 2017-06-22
WO2017112385A1 (en) 2017-06-29
EP3394719A1 (en) 2018-10-31
EP3394719A4 (en) 2019-07-31
CN108369495B (zh) 2023-06-06
EP3394719B1 (en) 2022-09-14
CN108369495A (zh) 2018-08-03

Similar Documents

Publication Publication Date Title
TWI769143B (zh) 用於使用浮點運算之硬體消去監測器的處理器、方法及系統
CN108028664B (zh) 使用具有多个搜索引擎的加速器的数据压缩
US10579530B2 (en) Prefetch filter cache for a processor
US11409560B2 (en) System, apparatus and method for power license control of a processor
CN108241507B (zh) 管理压缩加速器中的状态数据
US9541949B2 (en) Synchronization of domain counters
WO2019190688A1 (en) System, apparatus and method for data driven low power state control based on performance monitoring information
CN107567614B (zh) 用于对根据关键度被分组的指令的缕程的执行的多核处理器
US20180314289A1 (en) Modifying an operating frequency in a processor
US20170039034A1 (en) Threshold filtering of compressed domain data using steering vector
CN109791427B (zh) 使用滑动平均值的处理器电压控制
EP3340039A1 (en) Processor prefetch throttling based on short streams
CN108694154B (zh) 用于选择数据元素的硬件加速器
US11016916B2 (en) Generation of processor interrupts using averaged data
US20180181755A1 (en) Execution of software with monitoring of return oriented programming exploits
CN110998487A (zh) 现场可编程门阵列(fpga)中的自适应操作电压的系统、装置和方法
US10541687B2 (en) Validating an image for a reconfigurable device
US20230103206A1 (en) Caching based on branch instructions in a processor
WO2017209868A1 (en) Usage counter for control of system clocks
CN108228484B (zh) 针对处理器中的高速缓存利用的无效读取
US11493975B2 (en) System, apparatus and method for providing power monitoring isolation in a processor