TWI567639B - 以指令之類別與內容為基礎之處理器電源管理技術 - Google Patents

以指令之類別與內容為基礎之處理器電源管理技術 Download PDF

Info

Publication number
TWI567639B
TWI567639B TW100134356A TW100134356A TWI567639B TW I567639 B TWI567639 B TW I567639B TW 100134356 A TW100134356 A TW 100134356A TW 100134356 A TW100134356 A TW 100134356A TW I567639 B TWI567639 B TW I567639B
Authority
TW
Taiwan
Prior art keywords
instruction
macro
macro instruction
circuit
floating
Prior art date
Application number
TW100134356A
Other languages
English (en)
Other versions
TW201218074A (en
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 TW201218074A publication Critical patent/TW201218074A/zh
Application granted granted Critical
Publication of TWI567639B publication Critical patent/TWI567639B/zh

Links

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

以指令之類別與內容為基礎之處理器電源管理技術 發明領域
本發明係有關藉由時脈閘控未被利用於一所給予的指令類別或在一指令內之特定內容之處理器的個別部份而管理一處理器之電源消耗之技術。
發明背景
一中央處理單元(CPU)中有許多不同功能單位在一指令管線的某些階段中操作。以指令之類別或一指令內之內容為基礎,常有的情況是,不是所有的這些功能單元皆在相同時間被使用。因此,在一CPU之內的所有功能單元沒有固有理由將同時地導通。當然,一些單元在任何所給予的時間可能在其上無資料操作。當一功能單元無資料操作時,其是有效地閒置著。但是,仍然饋送一致動時脈的此些閒置單元,將由於接收的時脈信號經由整個單元之固定的鎖定切換(亦即,開關)而遭受電源消耗。
x86指令包含數個欄。多數基本欄之三者是指令操作碼(opcode)欄(例如,移動、移位等等)、一即時運算元欄以及一位移位元組欄。雖然在指令管線之內的許多功能單元具有電路系統以處理這些欄,經由該管線移動的一些指令不包含任何位移位元組資訊或一即時運算元資訊。於這些情況中,填滿這些欄的資料將不被利用並且大體上由隨機資料位元所組成。當指令經由該管線移動時,雖然這些欄不被利用,該等功能單元在輸進這資訊時仍然看到它們的鎖定器之切換。這切換進一步增加在CPU功能單元之內的電源消耗。
依據本發明之一實施例,係特地提出一種處理器,其包括:儲存複數個巨指令之一預取緩衝器;提供一振盪時脈信號以供用於該處理器中之至少複數個單元之一時脈電路;決定自該預取緩衝器取得的各巨指令之一類別的巨指令解碼邏輯;一時脈管理單元,當回應於複數個巨指令之一第一巨指令的該類別之決定,該時脈管理單元導致該振盪時脈信號保持在穩定狀態經過至少一個時脈週期而進入在該處理器中不被利用以操作於該第一巨指令上之複數個單元之至少一者;以及供用以解碼該第一巨指令成為一個或多個操作碼之該等複數個單元之一第一指令解碼器單元。
圖式簡單說明
本發明經由範例被展示並且是不受限定於圖形,於圖形中相同的參考號碼指示相似元件,並且於其中:
第1圖說明可以在系統中至少一處理器之內被執行的指令類別與內容為基礎而管理處理器電源消耗之電腦系統的實施例。
第2圖說明在所給予的核心內之特定有關單元以及功能邏輯方塊,其允許該核心具有經由指令類別判定以及指令內容判定以管理核心電源消耗之能力。
第3圖說明被利用以經由一指令管線而追蹤浮點微操作的一狀態機器之實施例。
第4圖是在不被組態以解碼進入解碼器的一目前指令之解碼器中以時脈閘控一個或多個可程規邏輯陣列之實施例的處理程序流程圖。
第5圖是當在管線中的一分支指令不被解碼時以時脈閘控一分支單元之處理程序的實施例流程圖。
第6圖是當沒有浮點指令出現在指令管線中時以時脈閘控一浮點單元之處理程序的實施例流程圖。
第7圖是當指令不利用即時以及位移位元組欄時則置零於那些欄之處理程序的實施例流程圖。
詳細說明
以一指令管線中之指令類別與內容為基礎而管理處理器電源的處理器以及方法之實施例被揭示。
第1圖說明可以在系統中之至少一個處理器內被執行的指令類別與內容為基礎而管理處理器電源消耗之電腦系統的實施例。
電腦系統100被展示。該電腦系統可以是桌上型電腦、伺服器、工作站、膝上型電腦、手持電腦、電視機上盒、媒體中心、遊戲操控臺、整合式系統(例如,於一汽車中)、或其他型式的電腦系統。於許多實施例中,電腦系統100包含一個或多個中央處理單元(CPU),同時也被稱為“處理器”。雖然於許多實施例中,可能有許多CPU,為簡明起見,於第1圖展示之實施例僅展示CPU 102。CPU 102可以是英代爾公司(Intel)之CPU或另一品牌之CPU。於不同實施例中,CPU 102包含一個或多個核心。被展示之CPU 102包含四個核心(核心104、106、108、以及110)。
於許多實施例中,各核心包含許多內部功能方塊/單元/邏輯構件,例如,核心104放大圖中展示的那些。例如,核心104包含至少一指令/資料(亦即,位準1,L1)快取112、預取緩衝器114、預解碼快取116、指令解碼器118、分支位址計算單元120、指令佇列122、浮點執行單元124、配置/除役單元126、以及時脈管理/產生邏輯128。許多的這些單元以及邏輯構件將在下面關於第2圖更詳細地被討論。大體上,在包含可能供用於被展示的許多單元各者之複製(例如,一個或多個整體/位址執行單元、3個浮點單元等等)的核心104中所展示的那些單元之外,在各核心之內將有更多的單元、暫存器、以及其他電路系統,但是另外的單元並不被展示以保持第1圖重要元件之清晰性。
於單一線程核心中,各核心可被當為一硬體線程。當一核心是多線程或超線程時,則在各核心之內操作的各線程也可被稱為硬體線程。因此,電腦系統100中任何執行的單一線程可以被稱為硬體線程。例如,第1圖中,如果各核心是單一線程,則有四個硬體線程出現在系統中(四個核心)。另一方面,如果各核心是多線程並且具有同時保持二個線程狀態之能力,則有八個硬體線程出現在系統中(四個核心,每個核心具有二個線程)。
CPU102也可包含一個或多個非L1快取,例如,非L1快取112。於許多實施例中,至少一個非L1快取,例如,快取130,出現在任何所給予的核心之外的CPU102中。另外地,於許多實施例中,快取130在展示的四個核心之間被共用。於未被展示的其他實施例中,除了快取130外之另外的非L1快取被實作。於不同的實施例中,快取130可以不同方式被分配。另外地,於不同實施例中,快取130可以是許多不同的尺度之一者。例如,快取130可以是8百萬位元組(MB)快取、16MB快取等等。另外地,於不同實施例中,快取130可以是直接對映快取、完全聯合快取、多路設定聯合快取、或具有另一對映型式之快取。於許多實施例中,快取130可包含在所有核心之間被共用之一個大的部份或可被分隔成為許多分別的功能小片(例如,供用於各核心之一個小片)。快取130也可包含在所有核心之間被共用的一個部份以及每個核心之分別功能小片的數個其他部份。
於許多實施例中,CPU102包含一整合式系統記憶體控制器132以提供界面而與系統記憶體134通訊。於未被展示的其他實施例中,記憶體控制器132可被置放於電腦系統100之分離的別處中。
系統記憶體134可包含動態隨機存取記憶體(DRAM),例如,雙重資料率(DDR)型式之DRAM、非依電性記憶體(例如,快閃記憶體)、相位改變記憶體(PCM)、或其他型式之記憶體技術。系統記憶體134可以是一般用途之記憶體以儲存在CPU102之上操作的資料以及指令。另外地,可以具有在電腦系統100之內讀取以及寫入至系統記憶體的能力之其他可能裝置,例如,可直接記憶體存取(DMA)-I/O(輸入/輸出)裝置。
耦合CPU102與系統記憶體134之鏈路(亦即,匯流排、互連等等)可包含一個或多個可輸送資料、位址、控制以及時脈資訊之光學、金屬、或其他接線(亦即,線路)。
平臺控制器中樞(PCH)136(例如,I/O控制器以及其他電路系統之複合體)包含能夠在CPU102以及外接I/O裝置之間通訊的I/O界面。該複合體可包含一個或多個I/O轉接器,例如,I/O轉接器138。I/O轉接器轉化在CPU 102之內使用之一主機通訊協定為可與一特定I/O裝置(例如,I/O裝置140)相容的一協定。所給予的I/O轉接器可能轉化的一些協定包含週邊構件互連(PCI)-快速、通用串列匯流排(USB)、串列先進技術連接(SATA)、小型電腦系統界面(SCSI)、廉價碟片冗餘陣列(RAID)以及1394“火線(Firewire)”。另外地,可以有一個或多個無線協定I/O轉接器。無線協定之範例是藍芽、IEEE802.11-基礎無線協定以及行動電話協定。
除了I/O裝置之外,PCH136也可耦合至系統中之一個或多個嵌進式控制器(EC),例如,EC142。EC142可包含一些功能。例如,RAID儲存控制器裝置可出現在電腦系統100之內。RAID控制器可管理硬碟驅動器或固態碟片(SSD)陣列。控制器裝置之其他範例可以是離散頻外管理引擎、鍵盤控制器、或另一型式的控制器。
於其他實施例中,PCH136是被置放而外接至CPU102之分離裝置。於這些實施例中,一界面,例如,直接記憶體界面(DMI)耦合CPU至PCH。雖然,這些實施例並不被展示。
CPU間界面144可提供一界面至耦合於一個或多個另外的CPU之鏈路,並且允許CPU間發生通訊。例如,CPU間高速界面可以是迅速通路互連(QPI)或其他相似界面。雖然另外的CPU並不在第1圖中被展示,於許多實施例中,CPU102是出現在電腦系統100之內的複數個CPU之一者。於許多實施例中,CPU間界面144提供出現在系統中之CPU102以及其他CPU各者之間的界面之一點對點高速通訊。
圖形界面146可提供一界面至耦合於一離散圖形控制器(一離散圖形控制器並未被展示)之鏈路。該界面可以是一高速平臺構件互連(PCI)-快速界面或另一高速界面。於其他實施例中,CPU 102包含一整合式圖形控制器並且圖形界面146可耦合至顯示裝置,例如,監視器。於許多實施例中,該界面是高速的以允許主要的圖形資料交通(例如,3D圖形、視訊等等)跨越鏈路而被傳送。
電腦系統100也包含一系統管理韌體148,以提供開機指令而啟始化電腦系統以及構件。於不同實施例中,系統管理韌體可以是基本輸入/輸出系統(BIOS)、可延伸韌體、或在平臺啟動期間電腦系統可利用之另一形式的韌體指令。
於許多實施例中,在電腦系統100內之各核心包含內部邏輯,其依在各核心之內被執行的指令類別與內容為基礎而管理核心電源消耗。在許多單元之內的多種邏輯被利用以經由時脈管理/產生邏輯128而在一時脈接時脈基礎上時脈閘控某些單元。
第2圖說明在所給予的核心內之特定相關的單元以及功能邏輯方塊,其允許核心有能力經由指令類別判定以及指令內容判定而管理核心電源消耗。
於一所給予的核心中,巨指令自指令快取112被取得並且被送進入預取緩衝器200中。於許多實施例中,有二個指令解碼器(解碼器0(202)以及解碼器1(204))。預取緩衝器200饋送對於各解碼器之一指令暫存器(指令1暫存器(206)以及指令2暫存器(208))。於第1圖展示之實施例中,在指令解碼器單元中有二個解碼器被展示,因為核心是可同時地解碼二個指令。為簡明起見,在單一解碼器之內的詳細電路僅在解碼器0之內被展示。這相同的電路呈現在解碼器1中,其不被展示,因為該電路反映於解碼器0中被展示之電路,並且,因此,兩次地說明該電路是多餘的。
除了預取緩衝器200之外,也有預解碼基礎邏輯210,其自預取緩衝器讀取快取線並且自指令快取線分離巨指令且決定以預解碼位元為基礎之指令長度。對於各巨指令,解碼邏輯提供指令位元組尺度類別之一第一回合近似值,亦即,巨指令是否將被解碼成為一個1位元組微操作碼、一個2位元組操作碼、一個3位元組操作碼,或解碼成為一個或多個變化長度操作碼的更複雜組集。預解碼處理之位元組類別尺度是一近似值,因為有一些指令,其中位元組尺度可能成為錯誤。除了第2圖中所展示的邏輯之外,另有一平行解碼器(全長度解碼器242),其進行一全長度解碼,其是完全精確的。但該全長度解碼器不是如預解碼長度近似值一般地有效,並且因此其平行於利用第2圖中所展示的邏輯進行之解碼程序而被進行。
於許多實施例中,如果全長度解碼器返回而具有一操作碼位元組長度(其是不同於巨指令解碼邏輯近似長度),則經目前指令之隨後指令是無效的,因為一錯誤的操作碼位元組長度可能引發將被利用而進一步降低指令管線功效之隨機垃圾資料。無效的指令經由利用全長度解碼器所決定的正確操作碼位元組長度之管線再次被傳送。雖然偶爾之操作碼以及經該指令之隨後第二次傳送的無效性降低管線性能效率,巨指令解碼邏輯位元組長度近似值之高成功率提供甚至較大的效能利益以保證這平行雙重長度解碼程序可被採用。
接著返回至指令1暫存器206,被鎖定在這暫存器中之巨指令進入解碼器0(202),並且被傳輸至在解碼器內之許多邏輯構件。取代具有一個大的程式邏輯陣列(PLA)以處理任何型式之接收巨指令之解碼處理程序,出現在解碼器0中之程式邏輯陣列,被分割成為執行每位元組長度之巨指令解碼的程式邏輯陣列。產生1位元組操作碼的所有巨指令在1位元組操作碼可程規邏輯陣列(PLA)212中被解碼,產生2位元組操作碼的所有巨指令在2位元組操作碼可程規邏輯陣列214中被解碼,並且產生3位元組操作碼的所有巨指令在3位元組操作碼可程規邏輯陣列216中被解碼。另外地,一複雜指令可程規邏輯陣列218解碼不被涵蓋以供在可程規邏輯陣列212-216中解碼的所有其他操作碼。通常,多數的巨指令落入1-3位元組操作碼翻譯,因此複雜指令可程規邏輯陣列(PLA)218可能不如其他三個可程規邏輯陣列一般地時常被利用。
於前幾代之解碼器中,通常出現可解碼所有指令的可程規邏輯陣列(PLA)。在第2圖中所有四個可程規邏輯陣列之內的電路將被包含進這單一可程規邏輯陣列(PLA)中。因此,不論何種位元組尺度類別巨指令被可程規邏輯陣列(PLA)接收,整個可程規邏輯陣列被致動以解碼巨指令使成為對應的操作碼。於第2圖展示之本發明實施例中,這電路系統被分割成為四個分別之可程規邏輯陣列。另外地,所有的可程規邏輯陣列依據一接收的振盪時脈信號而致動地而自週期至週期地執行。這振盪時脈信號自時脈管理處以及產生邏輯(CMGL)220處被接收。CMGL220包含時脈電路以在至少一個頻率產生至少一個振盪時脈信號。然而複數個頻率之複數個信號可被利用以提供處理器設計之彈性。於其中多於一個時脈率被利用之一些實施例中,一些單元採用雙重頻率、半頻率或任何其他可能的操作時脈信號頻率之時脈信號。雖然,於一些實施例中,第2圖中展示的功能單元以及邏輯皆以相同頻率執行。不論如何,CMGL220可傳輸一振盪時脈信號至第2圖展示需要其中一者以正確地進行之任何功能方塊/單元。雖然,為使第2圖清楚地表示,僅某些方塊/單元被展示如具有經由自CMGL220往外延伸的線路被供應之一時脈信號,這些特定時脈來源以及目的地組對將在下面被說明。
另外地,CMGL220也包含時脈管理電路以提供致動地管理供應時脈信號至任何一個或多個功能方塊/單元之能力。例如,時脈管理電路可包含時脈閘控邏輯以將時脈信號拉升至一穩定高狀態或使該時脈信號下降至一穩定低狀態。
當需要一時脈以執行之一功能方塊/單元拒絕一進入的時脈信號時,方塊/單元將停止作用,因為內部電路被迫進入穩定狀態而不是在該電路中具有切換動作(亦即,依據被供應時脈信號之切換/套取)。因此,如果CMGL220停止至功能邏輯方塊/單元之時脈信號,則邏輯終止運算。這節省方塊/單元之電路系統中的動態切換電源消耗。
因此,CMGL220可能或不會停止被供應至第2圖中之任何所給予的功能方塊/單元之時脈信號。於許多實施例中,巨指令解碼邏輯210將被決定對應至已輸入指令1暫存器206之所給予的指令位元組尺度類別長度近似值資訊傳送給CMGL220。於許多實施例中,近似位元組尺度類別長度通常可以是1、2、或3位元組。CMGL220,對於下一個時脈週期,保持被供應的時脈信號至對應於近似長度的可程規邏輯陣列,並且拉升供應至解碼其他長度之其他二個可程規邏輯陣列的時脈至一穩定狀態。對於上述之下一個時脈週期,僅三個特定位元組長度可程規邏輯陣列之一者將是可操作的。更進一步地,其他二個特定位元組長度可程規邏輯陣列將不是可操作的並且將消耗較少之動態電源,因為在它們的分別的電路系統之內將沒有動態切換電源消耗。
在下一個時脈週期,其中一隨後指令在指令1暫存器206中等待被解碼,相同程序發生。因此,在任何所給予的時脈週期期間,在1、2、以及3位元組操作碼可程規邏輯陣列中至多僅有一者將消耗主要動態切換電源。於許多實施例中,複雜指令可程規邏輯陣列(PLA)218永遠接收一供應時脈,因為CMGL220對於該特定的可程規邏輯陣列(PLA)不具有時脈閘控性能。
於一個1、2、或3位元組解碼之情況中,一旦巨指令傳經有關的位元組長度可程規邏輯陣列(PLA)並且已被解碼成為對應的操作碼時,其經由多工器222被多工化。於一需要可程規邏輯陣列218之複雜指令情況中,結果是可能自微碼唯讀記憶體(ROM)224產生操作碼。MUX222之輸出接著經由MUX226藉由可程規邏輯陣列(PLA)218以及微碼唯讀記憶體(ROM)224之輸出再次被多工化。MUX226之操作碼輸出,其包含自解碼器產生的操作碼,接著在處理任何位移位元組及/或一即時運算元之邏輯228處被接收,其可能是被附加至預取緩衝器200中之原始巨指令之一些欄。一旦該位移位元組及/或即時運算元被處理(如果有被附加至原始巨指令之任何欄),則操作碼自解碼器0被傳送出並且至指令佇列230等待執行。
於許多實施例中,巨指令解碼邏輯210可部份地解碼一所給予之接收的巨指令。巨指令解碼邏輯210,將也提供在預解碼處理期間於所給予之巨指令上產生的一組預解碼位元。於一些實施例中,巨指令解碼邏輯210可以依據預解碼位元為基礎而決定,在解碼器1中同時地被解碼的一個第二指令是無效的。有許多關於一第二指令為何可能是無效的範例(例如,一分支議題),但是無論如何,一旦巨指令解碼邏輯210察覺一第二指令進入解碼器1將是無效的,巨指令解碼邏輯210可引發CMGL220閘控被供應至整個解碼器2之時脈信號。例如,CMGL220可拉升時脈為一穩定狀態而至指令2暫存器208,且不允許暫存器中之鎖定釋出指令進入解碼器1。於其他實施例中,CMGL220可依據進入在一單一位置(未於第2圖中被展示)之解碼器的時脈樹型圖而分別地供應在解碼器2之內的所有主要功能單元/方塊。於這些實施例中,CMGL220可時脈閘控進入解碼器之整個樹型圖。因此,如果預解碼器邏輯210判定一指令是無效的,其實際上可藉由閘控被供應至解碼器邏輯之時脈,而停止在預定解碼指令使成為操作碼的解碼器之內的所有邏輯。
返回至解碼器0,一分支、浮點、欄檢測器邏輯(BFFDL)232也接收自指令1暫存器206傳輸進入解碼器0的巨指令。BFFDL232包含許多檢測邏輯部份以協助在核心內之電源管理。
如邏輯名稱所建議,在BFFDL232之內有分別之分支檢測邏輯、浮點檢測邏輯以及欄檢測邏輯。分支檢測邏輯決定指令是否將需要一分支位址計算。
一分支位址計算單元234將計算何等分支位址將供用於一分支指令。如果巨指令不涉及任何形式之分支,這分位址計算單元234將不被利用,然而被供應至這單元的時脈通常將仍然是可操作的,其再次導致非所需的動態切換電源消耗。為使分支位址計算單元234電源消耗最小化,BFFDL232將辨識將抵達分支位址計算單元234的下一個指令是否為一分支指令。BFFDL232可傳送這資訊至CMGL220,以導致CMGL220閘控被供應至分支位址計算單元234之時脈。
在BFFDL232之內的欄檢測邏輯具有能力,以決定所接收的特定巨指令是否實際上具有一位移位元組欄中之資料及/或一即時運算元欄中之資料。許多巨指令不利用這些欄。雖然該等欄不被利用,處理操作碼之整個管線的邏輯具有供用於這些欄的槽位,那些的槽位之內將具有與操作碼一起被傳送的隨機垃圾資料。隨機垃圾資料導致動態切換電源消耗,即使該資料不被利用。因此,於許多實施例中,一旦決定巨指令不利用這些欄的一個或兩者,BFFDL232將指示邏輯228置零於未使用之欄。這置零於欄之佈驟將進一步使在核心內的功能單元/方塊之間的管線電源消耗最小化。
在BFFDL232之內的浮點檢測邏輯檢測進入的巨指令是否為浮點(FP)操作。於許多實施例中,處理浮點計算之浮點單元236可相似於上面被時脈閘控的其他單元地被時脈閘控,但是浮點單元之時脈閘控是更複雜,因為有供該單元適當地作用所需的提前期並且對於每時脈去時脈閘控整個FP單元236是不實際的。因此,於許多實施例中,FP單元236僅當整個管線中沒有FP操作出現時方被時脈閘控。關於FP單元之管線通常包括在解碼器單元開始(以解碼FP巨指令)並且在除役單元結束(在已完成執行之後,將該FP指令除役)。因此,一狀態機器可被實作以支援追蹤出現在管線中之一完全的FP操作組(在解碼以及除役之間)。
一FP微操作(micro-op)追蹤器單元238可保持任何出現在管線中之FP指令/操作碼的追蹤,並且如果沒有FP指令/操作碼出現的話,則指示CMGL220時脈閘控FP單元236。當一FP指令進入解碼階段時,BFFDL232傳送資訊至FP微操作追蹤器238。FP指令接著傳通過整個管線並且最終除役。在除役期間,配置/除役單元240通知FP微操作追蹤器238,FP指令已除役。一旦除役,如果無另外的FP指令被輸入解碼器,則FP微操作追蹤器238可指示CMGL220停止進入FP單元236之時脈。
第3圖說明被利用以追蹤經由一指令管線之浮點微操作之狀態機器實施例。
開始狀態展示關於浮點微操作之閒置狀態(狀態300)的管線。如果無FP微操作(uOP)被接收,該狀態機器保持在閒置狀態,因為該管線不解碼一FP uOP(工作A)。如果一FP uOP抵達,則管線解碼該FP uOP(工作B),並且該狀態機器轉換至下一個狀態,其中該uOP結束該解碼階段,並且接著是在指令佇列中(狀態302)。一旦一FP uOP是在指令佇列中,回至閒置狀態的唯一方法是,使FP uOP除役而不需任何另外的FP uOP留在管線中。
一旦FP uOP是在指令佇列中(狀態302),二個事件可能發生。首先,如果在指令佇列中的FP uOP仍然是在指令佇列中,而一新的第二FP uOP被送進入解碼器中,則狀態機器停止追蹤第一FP uOP,並且轉為追蹤剛被送入的第二FP uOP。這是因為第二FP uOP將在第一FP uOP之後除役。管線進行解碼另一FP uOP之工作(工作C)。
其他可能的事件是,指令佇列中之uOP可被配置將被執行之資源(工作D)。於此情況中,該狀態機器轉變至uOP配置狀態(狀態304)。
一旦在uOP配置狀態中,另外的三個事件可能發生。首先,如果在配置階段(狀態304)中之第一FP uOP依然被除役並且一新的第二FP uOP被送進解碼器,狀態機器停止追蹤第一FP uOP,並且轉為追蹤剛被送達的第二FP uOP。這是因為第二FP uOP將在第一FP uOP之後除役。管線進行解碼另一FP uOP之工作(工作E)。這導致狀態機器返回至在指令佇列狀態中之UOP(狀態302),並且狀態機器接著追蹤第二FP uOP。
可能發生在狀態304中之第二事件是,FP uOP配置已發生,但是FP uOP除役未發生。於此情況中,一無事件發生,因為管線不將FP uOP除役(工作F)。這在FP uOP執行期間可能發生。
可能發生在狀態304中之第三事件是,管線可將FP uOP除役(工作G)。當這事件發生時,狀態機器移動返回至閒置(狀態300)。在任何所給予的點,當狀態機器是在閒置狀態時,FP微操作追蹤器(第2圖中之238)可指示CMGL220時脈閘控FP單元236。
第4圖是在不被組態以解碼進入解碼器之一目前指令的解碼器中,時脈閘控一個或多個可程規邏輯陣列之實施例的處理程序流程圖。
處理程序利用處理邏輯被進行,於不同實施例中,該處理邏輯可包括硬體電路系統及/或微碼。處理程序藉由處理邏輯自預取緩衝器取出一巨指令而開始(處理方塊400)。處理程序藉由處理邏輯決定巨指令之一位元組長度類別而繼續(處理方塊402)。依據該決定,處理邏輯接著在巨指令將被解碼的解碼器中,時脈閘控一個或多個可程規邏輯陣列(處理方塊404)。被時脈閘控之特定PLA是那些不被指定解碼被決定的位元組長度類別之巨指令者。最後,處理邏輯則利用未被時脈閘控的其餘可程規邏輯陣列(PLA)以解碼在解碼器中之巨指令(處理方塊406)。
第5圖是當一分支指令不被解碼時則時脈閘控一分支單元之實施例的處理程序流程圖。
處理程序利用處理邏輯被進行,於不同實施例中,該處理邏輯可包含硬體電路及/或微碼。處理程序藉由處理邏輯自預取緩衝器取出一巨指令而開始(處理方塊500)。處理邏輯接著決定該指令是否為一分支指令(處理方塊502)。如果該指令是分支指令,則處理程序結束。否則,如果指令不是分支指令,則在自巨指令產生的操作碼是在管線中之分支計算位置的時脈週期之期間,處理邏輯時脈閘控分支單元(處理方塊504),並且處理程序被完成。
第6圖是當沒有浮點指令出現在指令管線中時,則時脈閘控一浮點單元之實施例的處理程序流程圖。
處理程序利用處理邏輯被進行,於不同實施例中,該處理邏輯可包含硬體電路及/或微碼。處理程序藉由處理邏輯決定在解碼單元以及除役單元之間的管線中是否有任何FP指令而開始(處理方塊600)。如果在管線中某處有一FP指令,則處理程序返回至方塊600並且再次檢查。否則,如果管線中沒有FP指令,則處理邏輯時脈閘控該FP單元(處理方塊602)並且處理程序結束。於許多實施例中,這處理程序利用第3圖中詳述的狀態機器以追蹤管線中之FP指令的存在。
第7圖是當指令不利用那些欄時,則置零於一指令之即時以及位移位元組欄之實施例的處理程序流程圖。
處理程序利用處理邏輯被進行,於不同實施例中,該處理邏輯可包含硬體電路及/或微碼。處理程序藉由處理邏輯自預取緩衝器取出一巨指令而開始(處理方塊700)。處理邏輯接著決定指令是否採用即時欄(處理方塊702)。如果指令不採用該即時欄,則處理邏輯置零於指令即時欄中的所有資料上(處理方塊704)。不論指令是否採用即時欄,處理方塊接著決定指令是否採用位移位元組欄(處理方塊706)。如果採用位移位元組欄,則處理程序完成。此外,如果指令不採用位移位元組欄,處理邏輯置零於指令位移位元組欄中的所有資料上(處理方塊708)並且處理程序完成。
於許多實施例中,雖然時脈閘控可依據時脈閘控單元之特定理由而發生在多於一週期之上,但當時脈閘控在一所給予的功能方塊/單元上進行時,該單元之時脈被閘控經過至少一時脈週期。例如,時脈閘控1位元組可程規邏輯陣列通常在一單一時脈週期基礎上被完成,因為指令被帶入在各時脈週期被解碼,因此可程規邏輯陣列可被閘控少至一時脈週期的週期。同樣地考慮,數千之巨指令可經由管線執行而不需一單一浮點運算操作,於此情況中,FP單元可連續地被時脈閘控許多個時脈週期。
本發明實施例之元件也可被提供,如用於儲存機器可執行指令的機器可讀取媒體。機器可讀取媒體可包含,但是不受限定於,快閃記憶體、光碟、小型唯讀記憶體碟片(CD-ROM)、數位多功能/視訊碟片(DVD)ROM、隨機存取記憶體(RAM)、可消除可程規唯讀記憶體(EPROM)、電氣可消除可程規唯讀記憶體(EEPROM)、磁式或光學卡、傳輸媒體或適用於儲存電子指令的其他型式之機器可讀取媒體。
於上面說明文以及申請專利範圍中,詞組“包含”以及“包括”,可與它們的衍生詞一起被使用,並且是有意相互為同義字地被處理。此外,於下面的說明以及申請專利範圍中,詞組“耦合”以及“連接”,可與它們的衍生詞一起被使用。應了解,這些詞組不是有意作為彼此的同義字。反而,於特定實施例,“連接”可被使用以指示二個或更多個元件是直接彼此實際或電氣的接觸。“耦合”可表示二個或更多個元件是直接實際的或電氣接觸。但是,“耦合”也可表示二個或更多個元件不是彼此直接接觸,但是仍然彼此配合、互動或通訊。
於上面說明中,某種專門術語被使用以說明本發明實施例。例如,詞組“邏輯”是表示硬體、韌體、軟體(或其任何組合),以執行一個或多個功能。例如,“硬體”範例包含,但是不受限定於,積體電路、有限狀態機器或甚至組合邏輯。積體電路可採用處理器形式,例如,微處理器、特定應用積體電路、數位信號處理器、微控制器或其類似者。
應了解,關於這整個說明之“一實施例”或“一個實施例”意謂著有關所說明的實施例之特定的特點、結構或特徵被包含在本發明至少一實施例中。因此,其被強調且應了解,二個或更多個關於這說明文各部份中之“一實施例”或“一個實施例”或“另一實施例”不必定地皆涉及相同實施例。更進一步地,在本發明之一個或多個實施例中,如適當的話,特定的特點、結構、或特徵可被組合。
同樣地,應了解,於本發明實施例之先前的說明中,為使本發明揭示流暢之目的,各種特點有時一起被聚集在單一實施例、圖形或說明文中,以協助了解本發明之一個或多個論點。但是,這揭示之方法不應被詮釋作為反映所請求主題需要比各申請專利範圍中明確地被說明者有更多特點之意向。反而,如下面申請專利範圍之反映,本發明論點呈現較少於先前個別揭示之實施例的所有特點。因此,詳細說明之後的申請專利範圍因此明確地被包含於這詳細說明中。
100...電腦系統
102...中央處理單元
104、106、108、110...核心
112...指令/資料快取
114...預取緩衝器
116...預解碼快取
118...指令解碼器
120...分支位址計算單元
122...指令佇列
124...浮點執行單元
126...配置/退役單元
128...時脈管理/產生邏輯
130...快取
132...記憶體控制器
134...記憶體
136...平臺控制器中樞
138...I/O轉接器
140...I/O裝置
142...嵌進式控制器
144...CPU間界面
146...圖形界面
148...系統管理韌體
200...預取緩衝器
202...解碼器0
204...解碼器1
206...指令1暫存器
208...指令2暫存器
210...巨指令解碼邏輯
212、214、216...位元組操作碼可程規邏輯陣列
218...複雜指令可程規邏輯陣列
220...時脈管理處及產生邏輯
222、226...多工器
224...微碼唯讀記憶體
228...位移位元組/即時運算元邏輯
230...指令佇列
232...分支、浮點、欄檢測器邏輯
234...分支位址計算單元
236...浮點單元
238...浮點微操作追蹤器
240...配置/除役單元
242...全長度解碼器邏輯
300...閒置狀態
302...指令佇列狀態
304...配置狀態
400-406...處理流程步驟
500-504...處理流程步驟
600-602...處理流程步驟
700-708...處理流程步驟
第1圖說明可以在系統中至少一處理器之內被執行的指令類別與內容為基礎而管理處理器電源消耗之電腦系統的實施例。
第2圖說明在所給予的核心內之特定有關單元以及功能邏輯方塊,其允許該核心具有經由指令類別判定以及指令內容判定以管理核心電源消耗之能力。
第3圖說明被利用以經由一指令管線而追蹤浮點微操作的一狀態機器之實施例。
第4圖是在不被組態以解碼進入解碼器的一目前指令之解碼器中以時脈閘控一個或多個可程規邏輯陣列之實施例的處理程序流程圖。
第5圖是當在管線中的一分支指令不被解碼時以時脈閘控一分支單元之處理程序的實施例流程圖。
第6圖是當沒有浮點指令出現在指令管線中時以時脈閘控一浮點單元之處理程序的實施例流程圖。
第7圖是當指令不利用即時以及位移位元組欄時則置零於那些欄之處理程序的實施例流程圖。
112...指令快取
200...預取緩衝器
202...解碼器0
204...解碼器1
206...指令1暫存器
208...指令2暫存器
210...巨指令解碼邏輯
212...1位元組操作碼PLA
214...2位元組操作碼PLA
216...3位元組操作碼PLA
218...複雜指令PLA
220...時脈管理處及產生邏輯
222、226...多工器
224...微碼唯讀記憶體
228...即時運算元/位移位元組邏輯
230...指令佇列
232...分支、浮點、欄檢測器邏輯
234...分支位址計算單元
236...浮點單元
238...浮點微操作追蹤器
240...配置/除役單元
242...全長度解碼器邏輯

Claims (17)

  1. 一種處理器,其包括:預取緩衝器,用以儲存複數個巨指令(macro instruction);時脈電路,用以提供將由該處理器中之複數個電路中的至少一個使用的至少一個振盪時脈信號;巨指令解碼電路,用以決定自該預取緩衝器取得的各巨指令之類別以及決定巨指令是否包含一個或多個位移位元組,並且回應於不具有任何位移位元組之該巨指令,而置零(zero out)於該巨指令中之位移位元組欄;該等複數個電路之第一指令解碼器電路,用以將第一巨指令解碼成為一個或多個操作碼(opcode);浮點微操作追蹤器,用以追蹤浮點微操作,其中該浮點微操作對應至該等複數個巨指令之浮點巨指令,其係自當該對應的浮點巨指令從該預取緩衝器被取得的時間至該浮點微操作除役(retirement)的時間並且設定浮點管線清除旗標,當該旗標被設定時,其指示沒有浮點微操作是目前正被追蹤,其中除役的指示係由除役電路提供到該浮點微操作追蹤器;以及時脈管理電路,其回應於被設定之該浮點管線清除旗標而導致進入該等複數個電路之浮點電路的振盪時脈信號保持在穩定狀態經過至少一個時脈週期。
  2. 如申請專利範圍第1項之處理器,其中該第一指令解碼器電路用以包括: 該等複數個電路之第一可程規邏輯陣列電路(PLA),其用以解碼自該預取緩衝器取得的巨指令而產生一個一位元組操作碼;該等複數個電路之第二可程規邏輯陣列電路,其用以解碼自該預取緩衝器取得的巨指令而產生一個二位元組操作碼;以及該等複數個電路之第三可程規邏輯陣列電路,其用以解碼自該預取緩衝器取得的巨指令而產生一個三位元組操作碼;以及其中該巨指令解碼電路用以決定自該第一巨指令所產生之操作碼的位元組長度並且該時脈管理電路用以導致進入不解碼該決定位元組長度之巨指令的該等第一、第二以及第三可程規邏輯陣列之任一者之振盪時脈信號保持在穩定狀態經過至少一個時脈週期。
  3. 如申請專利範圍第1項之處理器,其中該時脈管理電路用以回應於被決定不是分支指令的該第一巨指令之類別而導致進入該等複數個電路的分支位址計算電路之振盪時脈信號保持在穩定狀態經過至少一個時脈週期。
  4. 如申請專利範圍第1項之處理器,其中該巨指令解碼電路用以執行下列步驟:決定該第一巨指令是否包含即時運算元;並且回應於不具有即時運算元之該第一巨指令,而置 零於該第一巨指令中之即時運算元欄。
  5. 如申請專利範圍第1項之處理器,進一步包括:該等複數個電路之第二指令解碼器電路;其中該巨指令解碼電路用以決定該等複數個巨指令之第二巨指令是否不是有效的,該第一巨指令用以在第一時脈週期進入該第一指令解碼器電路並且該第二巨指令用以在該第一時脈週期進入該第二指令解碼器電路;以及該電源管理電路用以回應於該第二巨指令被決定為不是有效而導致進入該第二指令解碼器電路之振盪時脈信號保持在穩定狀態經過至少一個時脈週期。
  6. 一種方法,其包括下列步驟:將複數個巨指令儲存在預取緩衝器中;提供至少一個振盪時脈信號給在處理器中之複數個單元使用;決定自該預取緩衝器取得的各巨指令之類別;回應於該等複數個巨指令之第一巨指令的該類別之該決定,導致由時脈電路供應之振盪時脈信號到不被利用的該處理器中之該等複數個單元中的至少一個以操作在如由將被閘控之該第一巨指令的該類別決定的該第一巨指令;決定該第一巨指令是否包含一個或多個位移位元組;回應於不具有任何位移位元組之該第一巨指令,而置零(zeroing out)於該第一巨指令中之位移位元組欄;將該第一巨指令解碼成為一個或多個操作碼 (opcode);追蹤浮點微操作,其中該浮點微操作對應至該等複數個巨指令之浮點巨指令,其係自當該對應的浮點巨指令從該預取緩衝器被取得的時間至該浮點微操作除役(retirement)的時間;設定浮點管線清除旗標,當該旗標被設定時,其指示沒有浮點微操作是目前正被追蹤;以及回應於被設定之該浮點管線清除旗標而導致進入該等複數個單元之浮點單元的振盪時脈信號保持在穩定狀態經過至少一個時脈週期。
  7. 如申請專利範圍第6項之方法,進一步包括下列步驟:決定自該第一巨指令所產生的位元組長度;並且導致進入不解碼所決定該第一巨指令的位元組長度之巨指令的第一、第二以及第三可程規邏輯陣列之任一者中之振盪時脈信號保持在穩定狀態經過至少一個時脈週期。
  8. 如申請專利範圍第6項之方法,進一步包括下列步驟:回應於被決定不是分支指令的該第一巨指令之類別,導致進入該等複數個單元之分支位址計算單元中之振盪時脈信號保持在穩定狀態經過至少一個時脈週期。
  9. 如申請專利範圍第6項之方法,進一步包括下列步驟:決定該第一巨指令是否包含即時運算元;並且 回應於不具有即時運算元之該第一巨指令,而置零於該第一巨指令中之即時運算元欄。
  10. 如申請專利範圍第6項之方法,進一步包括下列步驟:決定該等複數個巨指令之第二巨指令是否不是有效的,該第一巨指令用以在第一時脈週期進入該第一指令解碼器單元且該第二巨指令用以在該第一時脈週期進入第二指令解碼器單元;並且回應於該第二巨指令被決定為不是有效而導致進入該第二指令解碼器單元之振盪時脈信號保持在穩定狀態經過至少一個時脈週期。
  11. 一種處理器,其包括:預取緩衝器,用以儲存複數個巨指令;時脈電路,用以提供將由該處理器中之複數個電路中的至少一個使用的至少一個振盪時脈信號;巨指令解碼電路,用以決定自該預取緩衝器取得的各巨指令之近似位元組長度類別;該等複數個電路之第一指令解碼器電路,用以將第一巨指令解碼成為一個或多個操作碼(opcode);全長度解碼器電路,用以執行下列步驟:決定該第一巨指令之精確位元組長度類別,其中該全長度解碼器電路與該第一指令解碼器電路平行地解碼該第一巨指令;比較該第一巨指令之該精確位元組長度類別與該 第一巨指令之該近似位元組長度類別;回應於該精確位元組長度以及該近似位元組長度為不同長度,而使藉由該第一指令解碼器電路所產生之該等一個或多個操作碼無效。
  12. 如申請專利範圍第11項之處理器,其中該第一指令解碼器電路包含:該等複數個電路之第一可程規邏輯陣列電路(PLA),其用以解碼自該預取緩衝器取得的巨指令,而產生一個一位元組操作碼;該等複數個電路之第二可程規邏輯陣列電路,其用以解碼自該預取緩衝器取得的巨指令,而產生一個二位元組操作碼;以及該等複數個電路之第三可程規邏輯陣列電路,其用以解碼自該預取緩衝器取得的巨指令,而產生一個三位元組操作碼;其中該巨指令解碼電路用以決定自該第一巨指令所產生之操作碼的位元組長度;以及其中時脈管理電路用以導致進入不解碼該決定位元組長度之巨指令的該等第一、第二以及第三可程規邏輯陣列之任一者之振盪時脈信號保持在穩定狀態經過至少一個時脈週期。
  13. 如申請專利範圍第11項之處理器,其中該時脈管理電路用以回應於被決定不是分支指令的該第一巨指令之類別而導致振盪時脈信號保持在穩定狀態經 過至少一個時脈週期而進入該等複數個電路之分支位址計算電路。
  14. 如申請專利範圍第11項之處理器,其中該巨指令解碼電路用以執行下列步驟:決定該第一巨指令是否包含一個或多個位移位元組;並且回應於不具有任何位移位元組之該第一巨指令,而置零於該第一巨指令中之位移位元組欄。
  15. 如申請專利範圍第11項之處理器,其中該巨指令解碼電路用以執行下列步驟:決定該第一巨指令是否包含即時運算元;並且回應於不具有即時運算元之該第一巨指令,而置零於該第一巨指令中之即時運算元欄。
  16. 如申請專利範圍第11項之處理器,進一步包括:該等複數個電路之第二指令解碼器電路;其中該巨指令解碼電路用以決定該等複數個巨指令之第二巨指令是否不是有效的,該第一巨指令用以在第一時脈週期進入該第一指令解碼器電路並且該第二巨指令用以在該第一時脈週期進入該第二指令解碼器電路;以及電路用以回應於該第二巨指令被決定為不是有效而導致進入該第二指令解碼器電路之振盪時脈信號保持在穩定狀態經過至少一個時脈週期。
  17. 如申請專利範圍第11項之處理器,進一步包括: 浮點微操作追蹤器用以追蹤浮點微操作,其中該浮點微操作對應至該等複數個巨指令之浮點巨指令,其係自當該對應的浮點巨指令從該預取緩衝器被取得的時間至該浮點微操作除役的時間;並且設定浮點管線清除旗標,當該旗標被設定時,其指示沒有浮點微操作是目前正被追蹤;以及電路用以回應於被設定之該浮點管線清除旗標而導致進入該等複數個電路之浮點單元之振盪時脈信號保持在穩定狀態經過至少一個時脈週期。
TW100134356A 2010-09-24 2011-09-23 以指令之類別與內容為基礎之處理器電源管理技術 TWI567639B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/890,574 US9710277B2 (en) 2010-09-24 2010-09-24 Processor power management based on class and content of instructions

Publications (2)

Publication Number Publication Date
TW201218074A TW201218074A (en) 2012-05-01
TWI567639B true TWI567639B (zh) 2017-01-21

Family

ID=45871869

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100134356A TWI567639B (zh) 2010-09-24 2011-09-23 以指令之類別與內容為基礎之處理器電源管理技術

Country Status (9)

Country Link
US (1) US9710277B2 (zh)
JP (1) JP5735112B2 (zh)
KR (1) KR101496062B1 (zh)
CN (1) CN103154846B (zh)
BR (1) BR112013006962A2 (zh)
DE (1) DE112011103210T5 (zh)
GB (1) GB2497443B (zh)
TW (1) TWI567639B (zh)
WO (1) WO2012040662A2 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079249A1 (en) * 2010-09-28 2012-03-29 Wei-Han Lien Training Decode Unit for Previously-Detected Instruction Type
CN104281413B (zh) * 2013-07-10 2017-10-20 群联电子股份有限公司 命令队列管理方法、存储器控制器及存储器储存装置
KR102270791B1 (ko) * 2014-12-10 2021-06-29 삼성전자주식회사 매크로 명령어를 처리하는 방법 및 장치
WO2017145341A1 (ja) * 2016-02-25 2017-08-31 富士通株式会社 端末装置、給電判定装置及び給電判定方法
CN105929928B (zh) * 2016-04-25 2018-11-27 天津大学 一种指令级并行处理器低功耗设计优化方法
US9977680B2 (en) * 2016-09-30 2018-05-22 International Business Machines Corporation Clock-gating for multicycle instructions
WO2019105332A1 (en) * 2017-11-28 2019-06-06 Bitmain Technologies Inc. Computational integrated circuit chip and corresponding circuit board
CN109086875A (zh) * 2018-08-16 2018-12-25 郑州云海信息技术有限公司 一种基于宏指令集的卷积网络加速方法及装置
CN112540796B (zh) * 2019-09-23 2024-05-07 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法
CN111124499B (zh) * 2019-11-22 2022-11-01 中国科学院计算技术研究所 一种兼容多指令系统的处理器及其运行方法
US11907712B2 (en) * 2020-09-25 2024-02-20 Intel Corporation Methods, systems, and apparatuses for out-of-order access to a shared microcode sequencer by a clustered decode pipeline
US20230185572A1 (en) * 2021-12-13 2023-06-15 Intel Corporation Instruction decode cluster offlining

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
US6202163B1 (en) * 1997-03-14 2001-03-13 Nokia Mobile Phones Limited Data processing circuit with gating of clocking signals to various elements of the circuit
TWI286705B (en) * 2005-09-06 2007-09-11 Via Tech Inc Power management method of central processing unit
TWI319529B (en) * 2004-10-05 2010-01-11 Sony Computer Entertainment Inc Power management in a processing environment

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5374855A (en) 1976-12-15 1978-07-03 Fujitsu Ltd Data processor
JPS6145354A (ja) * 1984-08-10 1986-03-05 Nec Corp マイクロプロセツサ
JPH03167615A (ja) 1989-11-28 1991-07-19 Nec Corp マイクロプロセッサ
US5241637A (en) * 1990-01-05 1993-08-31 Motorola, Inc. Data processor microsequencer having multiple microaddress sources and next microaddress source selection
JP2834289B2 (ja) * 1990-07-20 1998-12-09 株式会社日立製作所 マイクロプロセッサ
JPH05143322A (ja) * 1991-11-15 1993-06-11 Sanyo Electric Co Ltd マイクロコンピユータ
US5392437A (en) * 1992-11-06 1995-02-21 Intel Corporation Method and apparatus for independently stopping and restarting functional units
US5666537A (en) * 1994-08-12 1997-09-09 Intel Corporation Power down scheme for idle processor components
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5726921A (en) * 1995-12-22 1998-03-10 Intel Corporation Floating point power conservation
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
AU3480897A (en) * 1996-06-10 1998-01-07 Lsi Logic Corporation An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set
US5941980A (en) * 1996-08-05 1999-08-24 Industrial Technology Research Institute Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
JP2886838B2 (ja) * 1997-01-14 1999-04-26 財団法人工業技術研究院 スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法
JP3961619B2 (ja) * 1997-06-03 2007-08-22 株式会社東芝 コンピュータシステムおよびその処理速度制御方法
US6275948B1 (en) 1997-11-14 2001-08-14 Agere Systems Guardian Corp. Processor powerdown operation using intermittent bursts of instruction clock
US6609193B1 (en) * 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
TW586666U (en) 2001-04-03 2004-05-01 Univ Nat Chiao Tung Microprocessor command reading structure
GB2375695B (en) * 2001-05-19 2004-08-25 At & T Lab Cambridge Ltd Improved power efficency in microprocessors
JP2003058365A (ja) * 2001-08-17 2003-02-28 Matsushita Electric Ind Co Ltd 命令デコード装置
JP4026753B2 (ja) * 2002-07-25 2007-12-26 株式会社日立製作所 半導体集積回路
US7194601B2 (en) * 2003-04-03 2007-03-20 Via-Cyrix, Inc Low-power decode circuitry and method for a processor having multiple decoders
US20040255103A1 (en) 2003-06-11 2004-12-16 Via-Cyrix, Inc. Method and system for terminating unnecessary processing of a conditional instruction in a processor
US7197655B2 (en) * 2003-06-26 2007-03-27 International Business Machines Corporation Lowered PU power usage method and apparatus
US7917734B2 (en) * 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
US7246219B2 (en) * 2003-12-23 2007-07-17 Intel Corporation Methods and apparatus to control functional blocks within a processor
WO2006000979A2 (en) 2004-06-25 2006-01-05 Koninklijke Philips Electronics N.V. Instruction processing circuit
US7263621B2 (en) * 2004-11-15 2007-08-28 Via Technologies, Inc. System for reducing power consumption in a microprocessor having multiple instruction decoders that are coupled to selectors receiving their own output as feedback
JP5496602B2 (ja) * 2009-10-30 2014-05-21 ルネサスエレクトロニクス株式会社 データプロセッサ
US8850166B2 (en) * 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
US6202163B1 (en) * 1997-03-14 2001-03-13 Nokia Mobile Phones Limited Data processing circuit with gating of clocking signals to various elements of the circuit
TWI319529B (en) * 2004-10-05 2010-01-11 Sony Computer Entertainment Inc Power management in a processing environment
TWI286705B (en) * 2005-09-06 2007-09-11 Via Tech Inc Power management method of central processing unit

Also Published As

Publication number Publication date
GB2497443A (en) 2013-06-12
CN103154846A (zh) 2013-06-12
GB2497443B (en) 2019-06-12
TW201218074A (en) 2012-05-01
US9710277B2 (en) 2017-07-18
KR101496062B1 (ko) 2015-02-25
KR20130054375A (ko) 2013-05-24
US20120079242A1 (en) 2012-03-29
JP2013546036A (ja) 2013-12-26
GB201302383D0 (en) 2013-03-27
WO2012040662A2 (en) 2012-03-29
DE112011103210T5 (de) 2013-07-04
BR112013006962A2 (pt) 2016-07-26
CN103154846B (zh) 2015-11-25
JP5735112B2 (ja) 2015-06-17
WO2012040662A3 (en) 2012-05-18

Similar Documents

Publication Publication Date Title
TWI567639B (zh) 以指令之類別與內容為基礎之處理器電源管理技術
US7809933B2 (en) System and method for optimizing branch logic for handling hard to predict indirect branches
EP2674858B1 (en) Loop buffer learning
US9201801B2 (en) Computing device with asynchronous auxiliary execution unit
JP4856100B2 (ja) 非アラインドメモリアクセス予測
EP2674857B1 (en) Loop buffer packing
TWI514275B (zh) 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法
US8327077B2 (en) Method and apparatus of parallel computing with simultaneously operating stream prefetching and list prefetching engines
JP2008530714A5 (zh)
JP5513744B2 (ja) 動的自動減衰デバイスアーキテクチャ
US20180365022A1 (en) Dynamic offlining and onlining of processor cores
US20230367595A1 (en) Gather buffer management for unaligned and gather load operations
US20170038791A1 (en) Clock management unit, integrated circuit including the clock management unit, system on chip, and method of operating the system on chip
US10423421B2 (en) Opportunistic utilization of redundant ALU
US11907712B2 (en) Methods, systems, and apparatuses for out-of-order access to a shared microcode sequencer by a clustered decode pipeline
US11150979B2 (en) Accelerating memory fault resolution by performing fast re-fetching
US7124277B2 (en) Method and apparatus for a trace cache trace-end predictor
CN115858022A (zh) 集群化解码管线的可缩放切换点控制电路系统

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees