[go: up one dir, main page]

TW201723856A - 用於亂序處理器中依序處置之指令與邏輯 - Google Patents

用於亂序處理器中依序處置之指令與邏輯 Download PDF

Info

Publication number
TW201723856A
TW201723856A TW105134693A TW105134693A TW201723856A TW 201723856 A TW201723856 A TW 201723856A TW 105134693 A TW105134693 A TW 105134693A TW 105134693 A TW105134693 A TW 105134693A TW 201723856 A TW201723856 A TW 201723856A
Authority
TW
Taiwan
Prior art keywords
instruction
instructions
memory
processor
logic
Prior art date
Application number
TW105134693A
Other languages
English (en)
Inventor
雅各 馬修
Original Assignee
英特爾Ip公司
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 英特爾Ip公司 filed Critical 英特爾Ip公司
Publication of TW201723856A publication Critical patent/TW201723856A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

在一個實施例中,一處理器包括一解碼邏輯、發出經解碼指令之一發出邏輯以及執行一程式之經發出指令之至少一個執行邏輯。該至少一個執行邏輯用以亂序執行該程式之至少一些指令,且該解碼邏輯用以解碼該程式之一第一依序記憶體指令並將其提供至該發出邏輯。又,該發出邏輯用以將該第一依序記憶體指令排序在該程式之一第二依序記憶體指令之前。描述並主張其他實施例。

Description

用於亂序處理器中依序處置之指令與邏輯
發明領域 本發明係關於處理邏輯、微處理器及在由處理器或其他處理邏輯執行時執行邏輯、數學或其他函數運算之相關聯指令集架構的領域。
發明背景 處理器內之指令的亂序執行針對某些計算密集型任務(如同信號處理)而發生。然而,需要記憶體映射輸入/輸出(MMIO)存取之依序執行來保證校正嵌入式控制應用程式中之執行。為實行此類操作,程式設計者引入特殊(例如圍欄/障壁)指令來確保依序執行。然而,此技術係容易產生誤差的,且使高階程式碼在指令集架構中之可攜性較低、可讀性較低及可再使用性較低。
歷史上,諸如包括於工業、汽車及其他專業環境中之小控制單元之嵌入系統係以依序處理器架構來架構的。當在嵌入式應用程式中執行更多計算複雜活動時,引入亂序處理架構,此舉增加複雜度且遭遇與現有程式碼基底之回溯相容性的問題。
依據本發明之一實施例,係特地提出一種處理器,其包含:一包含一亂序管線之核心,該亂序管線包括一解碼邏輯、一發出經解碼指令之一發出邏輯,及執行一程式之經發出指令之至少一個執行邏輯,其中該至少一個執行邏輯用以亂序執行該程式之至少一些指令,該解碼邏輯用以解碼該程式之一第一依序記憶體指令並將該經解碼第一依序記憶體指令提供至該發出邏輯,該發出邏輯用以將該第一依序記憶體指令排序在該程式之一第二依序記憶體指令之前,該第一依序記憶體指令為該程式之一源版本中之一無序指令。
較佳實施例之詳細說明 實施例提供待嚴格依序執行之載入及儲存指令之擴展集合。此類指令可編碼至不同於此類載入/儲存指令之亂序對應物的機器語言編碼中。在實施例中,處理器保證僅依序執行及提交兩個此類控制指令。應注意,可亂序執行同一程式之其他指令。
為了在程式中產生此類指令,編譯器可經組配以識別適應於依序執行之適當載入/儲存指令(正如正確程式操作所需的)。作為一個實例,用於諸如裝置驅動程式之程式中之記憶體映射輸入/輸出(MMIO)變數可藉由編譯器指引(例如,變數宣告中之前綴)識別,該編譯器指示指導編譯器將依序指令用於對彼等變數作出之讀取/寫入存取。在實施例中,在自處理器之即執行佇列選擇時,可藉由實體進行排程來向依序載入/儲存指令(例如控制指令)賦予較高優先權。
實施例可提供比諸如由程式設計者人工插入之圍欄/障壁指令之指令更高效之操作及程式設計。使用如本文所描述之指令之操作亦可比提供用於控制及計算任務及/或單獨依序模式之單獨核心更高效。
如同裝置驅動程式之控制定向程式碼涉及許多MMIO異動。MMIO移動可按嚴格程式次序執行,係因為兩個不同暫存器中之位元欄可能必須按某一次序寫入以啟用特定硬體功能。藉由例如針對MMIO異動提供如本文所描述之依序指令,載入-載入、儲存-儲存或載入-儲存相依性可僅在此等MMIO異動之間。藉由啟用有序指令之編譯器插入代替用亂序指令寫入之程式碼,實現源程式碼之易讀性、健壯性及可攜性。
實施例可用於各種包括但不限於嵌入系統之計算環境中。介面可用以指定待嚴格依序存取以保證正確性之位址區塊。因此,實施例使得能夠將亂序處理器用於嵌入控制域。
現參看表1,其展示根據實施例之呈C語言之MMIO變數之樣本高階宣告。 表1 volatile mmio struct _sUart Uart _attribute_ ( (section (“UART_REG”) ) )
如表1中所說明,此宣告提供編譯器前綴(被稱作MMIO)作為關鍵字來指定此變數為MMIO映射變數且因此將如本文所描述依序處置。在以上特定實例中,應理解,該宣告係定義將相應地處置與映射至位址之給定範圍之特定裝置驅動程式(此處為通用非同步接收器/傳輸器(UART))有關之所有暫存器。
作為一實例,正文編輯器可用以向編譯器指定關鍵字或高階程式碼生成工具可經指導以將位址區塊視為周邊裝置之部分。因此,其又產生類似於包括程式設計者的程式碼之程式碼。應注意,作為一實例在此使用此MMIO前綴;亦可基於編譯器/應用程式屬性中之關鍵字可獲得性而使用其他術語。
假定程式碼序列將寫入資訊至給定暫存器,例如,收發器暫存器(通用非同步接收器/傳輸器資料及通用非同步接收器/傳輸器觸發暫存器),且接著輪詢通用非同步接收器/傳輸器狀態暫存器。表2中說明此類操作之高階源程式碼。 表2 #define UART_TX_TRIGGER (1 << 4) #define UART_TX_COMPLETE 1 void uart_send_data (char data) { int c; Uart.data = (unsigned int) data; /*Write the data to be transmitted */ Uart.trigger = Uart.trigger | UART_TX_TRIGGER; while (Uart.status != UART_TX_COMPLETE); return; }
如所見,此源程式碼係寫入待傳輸至資料暫存器(Uart_data)之資料,利用觸發暫存器執行邏輯運算且傳輸該資料直至滿足觸發條件。更具體而言,該程式碼使得能夠用待傳輸之資料寫入至通用非同步接收器/傳輸器資料暫存器,接著指導通用非同步接收器/傳輸器藉由寫入至通用非同步接收器/傳輸器觸發暫存器開始傳輸。接著流程等待直至通用非同步接收器/傳輸器結束經由一行狀況循環發送資料。應注意,硬體將僅在傳輸操作完成後設定通用非同步接收器/傳輸器狀態==UART_TX_COMPLETE。應注意,與通用非同步接收器/傳輸器定義(通用非同步接收器/傳輸器資料、通用非同步接收器/傳輸器觸發以及通用非同步接收器/傳輸器狀態)相關聯之各種變數因此與編譯器指示相關聯,且因此編譯器將針對引用此等源程式碼變數作為運算元之指令而產生依序載入/儲存指令。此源程式碼在編譯於給定機器上時可轉譯程機器碼,例如,轉譯成組合語言。
下表3展示經轉譯程式碼而不提供如本文所描述之依序指令。 表3 movsx eax, BYTE PTR [esp+0x4] mov ds:0x0,eax → ds:0x0 -> Uart.data register mov eax,ds : 0x4 or eax, 0x10 mov ds : 0x4, eax → dx:0x4 -> Uart.trigger register mov eax, ds : 0x8 → ds:0x8 -> Uart.status register cmp eax, 0x1 jne 17 <_uart_send_data+0x17> ret nop nop
亂序處理器可參見此程式碼中之獨立執行緒,因為在其間不存在資料相依性。且因此自處理器觀點來看,不存在資料危險。但實際上,歸因於通用非同步接收器/傳輸器硬體強加之定序要求,該程式碼並非獨立的。
實施例提供指令集架構指令以執行依序載入/儲存操作。實例指令編碼包括所謂的emov指令。在一個實施例中,此實例可為待由程式設計者使用以指定載入/儲存指令之執行的使用者層級指令。在其他實施例中,該等指令可為編譯器產生之指令(諸如機器碼指令),其回應於源程式碼之亂序使用者層級載入/儲存指令而產生。更大體而言,此等指令可被稱為控制指令以指代此等指令之依序控制。可藉由基於微碼之系統中之微碼或藉由具有硬體解碼之處理器中之專用硬體進行實施。
實施例因此提供具有指令集之亂序處理器,該指令集中之指令之群組具有ISA層級保證以依序執行及提交。應注意,程式之源版本可依序提供指令。在習知亂序處理器中,指令解碼器(及發出邏輯)可忽略此排序。但使用根據一實施例之處理器,解碼器(及發出邏輯)將不會忽略用於本文所描述之依序指令之此資訊。
在一個實例中,根據實施例之控制移動指令具有助憶符emove。用於此指令之指令編碼之實例為:emov EAX,[位址]。藉由此編碼,該指令可引起移動操作將經識別之位址處的資訊移動至EAX暫存器。應注意,此指令可相對於先前emov指令及某些先前載入/儲存(例如,亂序移動)排序。亦即,根據本發明的實施例之控制指令將繼承其標準對應物之所有排序規則。另外,其將施加相對於先前控制指令之排序。在此情況下,emov指令繼承mov指令之所有排序規則。另外,其相對於先前控制指令嚴格排序。舉例而言,採用mov AX、0xa5a5,其後為[0xE5010000]、AX。在根據本發明之實施例的處理器中,此等兩個指令可經排序,因為AX暫存器為共同資源。此為繼承自mov指令之排序規則。
現參看表4,其展示根據一實施例之經產生之組合程式碼,其提供依序指令。現今,自處理器觀點來看,先前獨立之執行緒不再獨立,係因為emov指令確保其他emov指令中之依序執行。 表4 movsx eax, BYTE PTR [esp+0x4] emov ds:0x0,eax → ds:0x0 -> Uart.data register emov eax,ds : 0x4 or eax, 0x10 emov ds : 0x4, eax → dx:0x4 -> Uart.trigger register emov eax, ds : 0x8 → ds:0x8 -> Uart.status register cmp eax, 0x1 jne 17 <_uart_send_data+0x17> ret nop nop
儘管以下實施例係參考處理器來加以描述,但其他實施例適用於其他類型之積體電路及邏輯裝置。本發明之實施例的類似技術及教示可應用於可受益於較高管線輸送量及經改良效能的其他類型之電路或半導體裝置。本發明之實施例之教示適用於執行資料調處之任何處理器或機器。然而,該等實施例不限於執行512位元、256位元、128位元、64位元、32位元或16位元資料操作之處理器或機器,且可應用於可執行資料之調處或管理之任一處理器及機器。此外,以下描述提供實例,且隨附圖式出於說明目的而展示各種實例。然而,不應按限制性意義解釋此等實例,此係因為該等實例僅意欲提供本發明之實施例的實例,而非提供本發明之實施例的所有可能實施之詳盡清單。
儘管以下實例描述在執行單元及邏輯電路之情況下的指令處置及分佈,但本發明之其他實施例可藉由儲存於機器可讀有形媒體上之資料或指令而實現,資料或指令在由機器執行時使機器執行與本發明之至少一個實施例一致的功能。在一個實施例中,與本發明之實施例相關聯的功能以機器可執行指令體現。該等指令可用以使藉由該等指令程式之通用或專用處理器執行本發明之步驟。本發明之實施例可提供為電腦程式產品或軟體,其可包括其上儲存有指令的機器或電腦可讀媒體,該等指令可用以程式電腦(或其他電子裝置)以執行根據本發明之實施例的一或多個操作。此外,本發明之實施例的步驟可藉由含有用於執行該等步驟之固定功能邏輯的特定硬體組件或藉由經程式之電腦組件與固定功能硬體組件之任何組合來執行。
用以程式邏輯以執行本發明之實施例的指令可儲存於系統中之記憶體內,諸如,DRAM、快取記憶體、快閃記憶體或其他儲存器。此外,該等指令可經由網路或藉由其他電腦可讀媒體來分佈。因此,機器可讀媒體可包括用於儲存或傳輸呈可由機器(例如,電腦)讀取之形式之資訊的任何機制,但不限於磁碟片、光碟、緊密光碟、唯讀記憶體(CD-ROM)及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可程式唯讀記憶體(EPROM)、電可抹除可程式唯讀記憶體(EEPROM)、磁卡或光學卡、快閃記憶體或用於在網際網路上經由電、光學、聲學或其他形式之傳播信號(例如,載波、紅外線信號、數位信號等)傳輸資訊中使用的有形的機器可讀儲存器。因此,電腦可讀媒體可包括適合於以可由機器(例如,電腦)讀取之形式儲存或傳輸電子指令或資訊的任何類型之有形機器可讀媒體。
設計可經歷各種階段,自建立至模擬至製造。表示設計之資料可用多種方式表示設計。首先,如在模擬中有用的,可使用硬體描述語言或另一功能描述語言來表示硬體。另外,可在設計程序之一些階段處產生具有邏輯及/或電晶體閘之電路層級模型。此外,在一些階段,設計可達到表示各種裝置在硬體模型中之實體置放的資料之層級。在使用YIXIE 半導體製造技術之情況下,表示硬體模型之資料可為指定各種特徵在用於用以產生積體電路之遮罩的不同遮罩層上之存在或不存在的資料。在設計之任何表示中,可以機器可讀媒體之任一形式儲存資料。記憶體或磁性或光學儲存器(諸如,光碟)可為儲存資訊之機器可讀媒體,該資訊經由經調變或以其他方式產生以傳輸此資訊之光波或電波傳輸。當傳輸指示或攜載程式碼或設計之電載波時,就執行電信號之複製、緩衝或重新傳輸而言,可產生新複本。因此,通訊提供者或網路提供者可至少暫時將體現本發明之實施例之技術的物件(諸如,編碼成載波之資訊)儲存於有形機器可讀媒體上。
在現代處理器中,許多不同執行單元可用以處理及執行多種程式碼及指令。一些指令可更快地完成,而其他指令可耗費數個時脈循環才完成。指令之輸送量愈快,則處理器之整體效能愈好。因此,使許多指令儘可能快地執行將為有利的。然而,可存在具有較大複雜性且就執行時間及處理器資源而言需要更多的某些指令,諸如,浮點指令、載入/儲存操作、資料移動等。
由於較多電腦系統用於網際網路、文字及多媒體應用程式中,因此額外處理器支援已隨時間推移而被引入。在一個實施例中,一指令集可與一或多個電腦架構相關聯,該一或多個電腦架構包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及例外狀況處置以及外部輸入及輸出(I/O)。
在一個實施例中,指令集架構(ISA)可由可包括用以實施一或多個指令集之處理器邏輯及電路的一或多個微架構實施。因此,具有不同微架構之處理器可共用共同指令集之至少一部分。舉例而言,Intel® Pentium 4處理器、Intel® Core™處理器及來自Advanced Micro Devices, Inc.(Sunnyvale, CA)之處理器實施x86指令集之幾乎相同的版本(其中已隨較新版本添加一些擴展),但具有不同內部設計。類似地,由其他處理器開發公司(諸如,ARM Holdings, Ltd.)設計之處理器、MIPS或其使用人或採用者可共用至少一部分共同指令集,但可包括不同處理器設計。舉例而言,可藉由使用新技術或熟知技術之不同微架構以不同方式實施ISA之相同暫存器架構,包括專用實體暫存器、使用暫存器重命名機制(例如,使用暫存器別名表(RAT)、重排序緩衝器(ROB)及引退暫存器檔案的一或多個動態分配之實體暫存器。在一個實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔案或可為或可不為可由軟體程式設計者定址之其他暫存器集合。
指令可包括一或多個指令格式。在一個實施例中,指令格式可指示指定其中待執行之操作及彼操作將被執行之運算元的各種欄位(位元之數目、位元之位置等)。在又一實施例中,一些指令格式可另外由指令範本(或子格式)定義。舉例而言,給定指令格式之指令範本可經定義以具有指令格式之欄位的不同子集及/或經定義以具有不同地解譯之給定欄位。在一個實施例中,使用指令格式(且若經定義,則以彼指令格式之指令範本中的給定者)表達指令,且該指令指定或指示運算及該運算將對其進行運算的運算元。
科學、金融、自動向量化通用、RMS(辨識、挖掘及合成)及視覺及多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊操縱)可需要對大量資料項目執行同一運算。在一個實施例中,單一指令多重資料(SIMD)係指使處理器對多個資料元素執行操作之類型之指令。SIMD技術可用於可在邏輯上將暫存器中之位元分成數個固定大小或可變大小資料元素之處理器中,該等資料元素中之各者表示單獨值。舉例而言,在一個實施例中,64位元暫存器中之位元可組織為含有四個單獨16位元資料元素之源運算元,該等資料元素中之各者表示單獨16位元值。此類型之資料可被稱作「封裝」資料類型或「向量」資料類型,且此資料類型之運算元被稱作封裝資料運算元或向量運算元。在一個實施例中,封裝資料項目或向量可為儲存於單一暫存器內之一連串封裝資料元素,且封裝資料運算元或向量運算元可為SIMD指令(或「封裝資料指令」或「向量指令」)之源運算元或目的地運算元。在一個實施例中,SIMD指令指定待對兩個源向量運算元執行單一向量運算以產生具有相同或不同大小、具有相同或不同數目個資料元素且呈相同或不同資料元素次序之目的地向量運算元(亦被稱作結果向量運算元)。
諸如由以下處理器採用之技術的SIMD技術已實現應用效能之顯著改良:Intel® Core™處理器,其具有包括x86、MMX™、串流SIMD擴充(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令之指令集;ARM處理器,諸如,ARM Cortex®系列處理器,其具有包括向量浮點(VFP)及/或NEON指令之指令集;及MIPS處理器,諸如,由中國科學院之計算技術研究所開發之Loongson系列處理器(Core™及MMX™為Santa Clara, Calif.之Intel Corporation的註冊商標或商標)。
在一個實施例中,目的地及源暫存器/資料可為表示對應資料或操作之來源及目的地。在一些實施例中,其可由暫存器、記憶體或具有與所描繪之彼等名稱或功能不同的名稱或功能的其他儲存區域實施。舉例而言,在一個實施例中,「DEST1」可為暫時儲存暫存器或其他儲存區域,而「SRC1」及「SRC2」可為第一及第二來源儲存暫存器或其他儲存器區域,等等。在其他實施例中,SRC及DEST儲存區域中之兩者或多於兩者可對應於同一儲存區域(例如,SIMD暫存器)內之不同資料儲存元件。在一個實施例中,源暫存器中之一者亦可藉由(例如)將對第一及第二源資料執行之運算之結果寫回至充當目的地暫存器之兩個源暫存器中之一者來充當目的地暫存器。
圖1A為根據本發明之實施例的例示性電腦系統之方塊圖,該電腦系統經形成有可包括用以執行指令之執行單元的處理器。根據本發明,諸如在本文中所描述之實施例中,系統100包括組件,諸如,使用執行單元之處理器102,該等執行單元包括執行用於程序資料之演算法的邏輯。系統100可表示基於可自Intel Corporation (Santa Clara, California)獲得的以下各者之處理系統:PENTIUM™ III、PENTIUM™ 4、Xeon™、Itanium™、XScale™及/或StrongARM™微處理器,但亦可使用其他系統(包括具有其他微處理器、工程化工作站、機上盒及類似者之PC)。在一個實施例中,樣本系統100可執行可購自Microsoft公司(Redmond, Washington)之WINDOWStm 作業系統的版本,但亦可使用其他作用系統(例如,UNIX及Linux)、嵌入式軟體及/或圖形使用者介面。因此,本發明之實施例不限於硬體電路與軟體之任何具體組合。
實施例不限於電腦系統。本發明之實施例可用於諸如手持型裝置之其他裝置及嵌入式應用中。手持型裝置之一些實例包括蜂巢式電話、網際網路協定裝置、數位攝影機、個人數位助理(PDA)及手持型PC。嵌入式應用可包括微控制器、數位信號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換器或可執行根據至少一個實施例之一或多個指令之任何其他系統。
電腦系統100可包括處理器102,該處理器可包括一或多個執行單元108以執行演算法從而執行根據本發明之一個實施例的至少一個指令。可在單一處理器桌上型或伺服器系統之上下文中描述一個實施例,但其他實施例可包括於多處理器系統中。系統100可為「集線器」系統架構之實例。系統100可包括用於處理資料信號之處理器102。處理器102可包括複雜指令集電腦(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器、實施指令集之組合的處理器或任何其他處理器裝置(諸如,數位信號處理器)。在一些實施例中,處理器102可耦接至處理器匯流排110,其可在系統100中之處理器102與其他組件之間傳輸資料信號。系統100之元件可執行熟習此項術者所熟知之習知功能。
在一個實施例中,處理器102可包括1階(L1)內部快取記憶體104。取決於架構,處理器102可具有單一內部快取記憶體或多個層級之內部快取記憶體。在另一實施例中,快取記憶體可駐留在處理器102外。取決於特定實施及需要,其他實施例亦可包括內部及外部快取記憶體兩者之組合。暫存器檔案106可將不同類型之資料儲存於包括整數暫存器、浮點暫存器、狀態暫存器及指令指標暫存器之各種暫存器中。
包括用以執行整數及浮點運算之邏輯的執行單元108亦駐留於處理器102中。處理器102亦可包括儲存用於某些巨集指令之微碼的微碼(ucode) ROM。在一個實施例中,執行單元108可包括用以處置封裝指令集109之邏輯。藉由將封裝指令集109包括於通用處理器102之指令集中,連同用以執行該等指令之相關聯電路一起,可使用通用處理器102中之封裝資料來執行由許多多媒體應用程式使用之操作。因此,藉由將處理器之資料匯流排的全寬度用於對封裝資料執行操作,可使許多多媒體應用程式加速且更有效地執行。此可消除對跨越處理器之資料匯流排傳送較小資料單元以同時對一個資料元素執行一或多個操作的需要。
亦可在微控制器、嵌入式處理器、圖形裝置、DSP及其他類型之邏輯電路中使用執行單元108之實施例。系統100可包括記憶體120。記憶體120可實施為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置或其他記憶體裝置。記憶體120可儲存指令及/或由可由處理器102執行之資料信號表示的資料。
系統邏輯晶片116可耦接至處理器匯流排110及記憶體120。系統邏輯晶片116可包括記憶體控制器集線器(MCH)。處理器102可經由處理器匯流排110與MCH 116通訊。MCH 116可提供至記憶體120之高頻寬記憶體路徑118以用於指令及資料儲存且用於圖形命令、資料及紋理之儲存。MCH 116可在處理器102、記憶體120及系統100中之其他組件之間引導資料信號且在處理器匯流排110、記憶體120及系統I/O 122之間橋接資料信號。在一些實施例中,系統邏輯晶片116可提供用於耦接至圖形控制器112之圖形埠。MCH 116可透過記憶體介面118耦接至記憶體120。圖形卡112可透過加速圖形埠(AGP)互連114而耦接至MCH 116。
系統100可使用專屬集線器介面匯流排122將MCH 116耦接至I/O控制器集線器(ICH) 130。在一個實施例中,ICH 130可經由區域I/O匯流排來提供至一些I/O裝置之直接連接。區域I/O匯流排可包括用於將周邊裝置連接至記憶體120、晶片組及處理器102之高速I/O匯流排。實例可包括音訊控制器、韌體集線器(快閃BIOS) 128、無線收發器126、資料儲存器124、含有使用者輸入及鍵盤介面之舊式I/O控制器、諸如通用串列匯流排(USB)之串列擴充埠,及網路控制器134。資料儲存裝置124可包含硬碟機、軟碟機、CD-ROM裝置、快閃記憶體裝置或其他大容量儲存裝置。
對於系統之另一實施例,根據一個實施例之指令可供系統單晶片使用。系統單晶片之一個實施例包含處理器及記憶體。用於一個此系統之記憶體可包括快閃記憶體。快閃記憶體可與處理器及其他系統組件位於同一晶粒上。另外,諸如記憶體控制器或圖形控制器之其他邏輯區塊亦可位於系統單晶片上。
圖1B說明實施本發明之實施例之原理的資料處理系統140。熟習此項技術者將容易理解,在不脫離本發明之實施例之範疇的情況下,本文中所描述之實施例可用替代處理系統操作。
電腦系統140包含用於執行根據一個實施例之至少一個指令之處理核心159。在一個實施例中,處理核心159表示具有任何類型之架構的處理單元,該架構包括(但不限於) CISC、RISC或VLIW類型架構。處理核心159亦可適合於用一或多種處理技術來製造,且藉由以足夠細節在機器可讀媒體上表示,可適合於促進該製造。
處理核心159包含執行單元142、一組暫存器檔案145及解碼器144。處理核心159亦可包括額外電路(未圖示),該額外電路對於理解本發明之實施例而言可並非必要的。執行單元142可執行由處理核心159接收之指令。除執行典型處理器指令外,執行單元142亦可執行用於對封裝資料格式執行操作的封裝指令集143中之指令。封裝指令集143可包括用於執行本發明之實施例之指令及其他封裝指令。執行單元142可藉由內部匯流排耦接至暫存器檔案145。暫存器檔案145可表示處理核心159上的用於儲存資訊(包括資料)之儲存區域。如先前所提及,應理解,儲存區域可儲存可能非關鍵之封裝資料。執行單元142可耦接至解碼器144。解碼器144可將由處理核心159接收之指令解碼成控制信號及/或微碼入口點。回應於此等控制信號及/或微碼入口點,執行單元142執行適當操作。在一個實施例中,解碼器可解譯指令之作業碼,其將指示應對指令內所指示之對應資料執行何操作。
處理核心159可與匯流排141耦接以用於與各種其他系統裝置通訊,該等系統裝置可包括(但不限於)例如同步動態隨機存取記憶體(SDRAM)控制件146、靜態隨機存取記憶體(SRAM)控制件147、叢發快閃記憶體介面148、個人電腦記憶卡國際協會(PCMCIA)/緊密快閃記憶體(CF)卡控制件149、液晶顯示器(LCD)控制件150、直接記憶體存取(DMA)控制器151及替代匯流排主控介面152。在一個實施例中,資料處理系統140亦可包含用於經由I/O匯流排153與各種I/O裝置通訊之I/O橋接器154。此類I/O裝置可包括(但不限於)通用非同步接收器/傳輸器(UART) 155、通用串列匯流排(USB) 156、藍芽無線UART 157及I/O擴充介面158。
資料處理系統140之一個實施例提供行動、網路及/或無線通訊,及可執行包括文字串比較操作之SIMD操作之處理核心159。處理核心159可藉由以下各者程式:各種音訊、視訊、成像及通訊演算法,包括離散變換,諸如沃爾什-哈達瑪(Walsh-Hadamard)變換、快速傅立葉變換(FFT)、離散餘弦變換(DCT)及其各別反變換;壓縮/解壓縮技術,諸如色彩空間變換、視訊編碼運動估計或視訊解碼運動補償;及調變/解調變(數據機)功能,諸如脈碼調變(PCM)。
圖1C說明根據本發明之實施例的用以執行操作之資料處理系統之另一實施例。在一個實施例中,資料處理系統160可包括主處理器166、SIMD共處理器161、快取記憶體167及輸入/輸出系統168。輸入/輸出系統168可視情況耦接至無線介面169。SIMD共處理器161可執行包括根據一個實施例之指令的操作。在一個實施例中,處理核心170可適合於用一或多種處理技術來製造,且藉由足夠詳細地在機器可讀媒體上表示,可適合於促進包括處理核心170之資料處理系統160的全部或部分之製造。
在一個實施例中,SIMD共處理器161包含執行單元162及一組暫存器檔案164。主處理器165之一個實施例包含解碼器165,其用以辨識包括根據一個實施例之指令的指令集163之指令以供由執行單元162執行。在其他實施例中,SIMD共處理器161亦包含解碼器165之至少部分以解碼指令集163之指令。處理核心170亦可包括額外電路(未圖示),該額外電路對於理解本發明之實施例而言可並非必要的。
在操作中,主處理器166執行資料處理指令之串流,該等資料處理指令控制一般類型之資料處理操作,包括與快取記憶體167及輸入/輸出系統168之互動。在資料處理指令之串流內嵌入了SIMD共處理器指令。主處理器166之解碼器165將此等SIMD共處理器指令辨識為應由所附接SIMD共處理器161執行之類型。相應地,主處理器166在共處理器匯流排166上發出此等SIMD共處理器指令(或表示SIMD共處理器指令之控制信號)。此等指令可由任何所附接SIMD共處理器自共處理器匯流排166接收。在此情況下,SIMD共處理器161可接受並執行意欲用於其的任何接收之SIMD共處理器指令。
可經由無線介面169接收資料以供由SIMD共處理器指令處理。對於一個實例,可按數位信號之形式來接收語音通訊,該數位信號可由SIMD共處理器指令處理以再生表示語音通訊之數位音訊樣本。對於另一實例,可按數位位元串流之形式接收壓縮音訊及/或視訊,該數位位元串流可由SIMD共處理器指令處理以再生數位音訊樣本及/或運動視訊圖框。在處理核心170之一個實施例中,主處理器166及SIMD共處理器161可整合至單一處理核心170內,該單一處理核心包含執行單元162、一組暫存器檔案164及辨識包括根據一個實施例之指令的指令集163之指令之解碼器165。
圖2為根據本發明之實施例的用於可包括用以執行指令之邏輯電路之處理器200的微架構之方塊圖。在一些實施例中,根據一個實施例之指令可經實施以對具有位元組、字、雙字、四倍字等之大小以及諸如單精度及雙精度整數及浮點資料類型之資料類型的資料元素進行操作。在一個實施例中,依序前端201可實施處理器200之可提取待執行之指令的一部分且準備該等指令稍後在處理器管線中使用。前端201可包括若干單元。在一個實施例中,指令預取器226自記憶體提取指令且將該等指令饋送至又解碼或解譯該等指令之指令解碼器228。舉例而言,在一個實施例中,解碼器將所接收指令解碼成機器可執行之一或多個操作,其被稱為「微指令」或「微操作(micro-operation)」(亦稱為微操作(micro op)或uop)。在其他實施例中,解碼器將指令剖析成作業碼及可由微架構使用以執行根據一個實施例之操作的對應資料及控制欄位。在一個實施例中,追蹤快取記憶體230可將經解碼uop組合成uop佇列234中之程式有序序列或跡線以供執行。當追蹤快取記憶體230遇到複雜指令時,微碼ROM 232提供完成操作所需之uop。
一些指令可轉換成單一微操作,而其他指令需要若干微操作來完成全部操作。在一個實施例中,若完成一指令需要多於四個微操作,則解碼器228可存取微碼ROM 232以執行該指令。在一個實施例中,可在指令解碼器228處將指令解碼成少數微操作以供處理。在另一實施例中,若完成操作需要數個微操作,則可將指令儲存於微碼ROM 232內。追蹤快取記憶體230參考入口點可程式邏輯陣列(PLA)以判定用於自微碼ROM 232讀取微碼序列以完成根據一個實施例之一或多個指令的正確微指令指標。在微碼ROM 232結束對用於指令之微操作定序之後,機器的前端201可恢復執行自追蹤快取記憶體230提取微操作。
亂序執行引擎203可使指令準備好供執行。亂序執行邏輯具有數個緩衝器,其用以在指令流通過管線且經排程以供執行時使指令流平滑且將其重新排序以最佳化效能。分配器邏輯分配各微操作需要以便執行之機器緩衝器及資源。暫存器重命名邏輯將邏輯暫存器重命名至暫存器檔案中之輸入項上。該分配器亦在以下指令排程器之前針對兩個微操作佇列(一者用於記憶體操作且一者用於非記憶體操作)中之一者中的各微操作分配一輸入項:記憶體排程器、快速排程器202、緩慢/通用浮點排程器204及簡單浮點排程器206。微操作排程器202、204、206基於其相依的輸入暫存器運算元來源之就緒及微操作完成其操作所需之執行資源之可用性來判定微操作何時準備好執行。一個實施例之快排程器202可以每半個主時脈循環進行排程,而其他排程器在每個主處理器時脈循環中僅排程一次。該等排程器對分派埠仲裁以排程微操作以供執行。
暫存器檔案208、210可配置在排程器202、204、206與執行區塊211中之執行單元212、214、216、218、220、222、224之間。暫存器檔案208、210中之各者分別執行整數及浮點運算。各暫存器檔案208、210可包括旁路網路,其可繞過尚未寫入至暫存器檔案中的剛剛完成之結果或將該等結果轉遞至新的相依微操作。整數暫存器檔案208及浮點暫存器檔案210可與另一者傳送資料。在一個實施例中,可將整數暫存器檔案208分裂成兩個單獨暫存器檔案,一個暫存器檔案用於資料之低階的三十二個位元且第二暫存器檔案用於資料之高階的三十二個位元。浮點暫存器檔案210可包括128位元寬之輸入項,係因為浮點指令通常具有寬度為64位元至128位元之運算元。
執行區塊211可含有執行單元212、214、216、218、220、222、224。執行單元212、214、216、218、220、222、224可執行指令。執行區塊211可包括儲存微指令需要執行之整數及浮點資料運算元值的暫存器檔案208、210。在一個實施例中,處理器200可包含數個執行單元:位址產生單元(AGU) 212、AGU 214、快ALU 216、快ALU 218、慢ALU 220、浮點ALU 222、浮點移動單元224。在另一實施例中,浮點執行區塊222、224可執行浮點、MMX、SIMD及SSE或其他操作。在又一實施例中,浮點ALU 222可包括64位元乘64位元之浮點除法器以執行除法、平方根及餘數微操作。在各種實施例中,可用浮點硬體來處置涉及浮點值之指令。在一個實施例中,可將ALU操作傳遞至高速ALU執行單元216、218。高速ALU 216、218可執行具有半個時脈週期之有效潛時的快速操作。在一個實施例中,多數複雜的整數運算轉至慢ALU 220,此係因為慢ALU 220可包括用於長潛時類型之運算的整數執行硬體,諸如,乘法器、移位、旗標邏輯及分支處理。記憶體載入/儲存操作可由AGU 212、214執行。在一個實施例中,整數ALU 216、218、220可對64位元資料運算元執行整數操作。在其他實施例中,可實施ALU 216、218、220以支援多種資料位元大小,包括十六、三十二、128、256等。類似地,可實施浮點單元222、224以支援具有各種寬度之位元的一系列運算元。在一個實施例中,浮點單元222、224可結合SIMD及多媒體指令對128位元寬之封裝資料運算元進行運算。
在一個實施例中,微操作排程器202、204、206在親代載入(parent load)已完成執行之前分派相依操作。當在處理器200中推測地排程及執行微操作時,處理器200亦包括處置記憶體未命中之邏輯。若資料載入在資料快取記憶體中未命中,則管線中可存在使排程器具有暫時不正確資料的運作中之相依操作。重新執行機構追蹤及重新執行使用不正確資料之指令。可僅需要重新執行相依操作且可允許獨立操作完成。處理器之一個實施例的排程器及重新執行機構亦可經設計以抓取指令序列用於文字串比較操作。
術語「暫存器」可係指可被用作識別運算元之指令之部分的機載處理器儲存位置。換言之,暫存器可為可自處理器外部(自程式設計者之視角)使用的彼等暫存器。然而,在一些實施例中,暫存器可不限於特定類型之電路。實情為,暫存器可儲存資料、提供資料以及執行本文中所描述之功能。可藉由處理器內之電路使用任何數目種不同技術來實施本文中所描述之暫存器,諸如專用實體暫存器、使用暫存器重命名的動態分配之實體暫存器、專用實體暫存器與動態分配之實體暫存器之組合等。在一個實施例中,整數暫存器儲存32位元整數資料。一個實施例之暫存器檔案亦含有用於封裝資料之八個多媒體SIMD暫存器。對於下文之論述,可將暫存器理解為經設計以保持封裝資料之資料暫存器,諸如,具備來自Santa Clara, California之Intel Corporation之MMX技術能力的微處理器中之64位元寬MMXTM 暫存器(在一些情況下,亦被稱作「mm」暫存器)。以整數及浮點形式兩者可用之此等MMX暫存器可對伴隨SIMD及SSE指令之封裝資料元素操作。類似地,與SSE2、SSE3、SSE4或更高(一般被稱作「SSEx」)技術相關的128位元寬XMM暫存器可保持此等封裝資料運算元。在一個實施例中,在儲存封裝資料及整數資料時,暫存器並不需要區分兩個資料類型。在一個實施例中,整數及浮點可含於同一暫存器檔案或不同暫存器檔案中。此外,在一個實施例中,浮點及整數資料可儲存於不同暫存器或相同暫存器中。
在以下諸圖之實例中,描述數個資料運算元。圖3A說明根據本發明之實施例的多媒體暫存器中之各種封裝資料類型表示。圖3A說明用於128位元寬運算元之封裝位元組310、封裝字320及封裝雙字(dword)330之資料類型。此實例之封裝位元組格式310可長128位元且含有十六個封裝位元組資料元素。可將位元組定義為例如八個資料位元。每一位元組資料元素之資訊可儲存於位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16以及最後位元組15之位元120至位元127中。因此,可使用暫存器中之所有可用位元。此儲存配置增加處理器之儲存效率。同樣,在存取十六個資料元素之情況下,現可並行地對十六個資料元素執行一個操作。
大體而言,資料元素可包括與具有相同長度之其他資料元素一起儲存於單一暫存器或記憶體位置中的個別資料段。在與SSEx技術相關之封裝資料序列中,儲存於XMM暫存器中之資料元素的數目可為128個位元除以個別資料元素之位元長度。類似地,在與MMX及SSE技術有關之封裝資料序列中,儲存於MMX暫存器中之資料元素的數目可為64位元除以個別資料元素之位元長度。儘管圖3A中所說明之資料類型可長128個位元,但本發明之實施例亦可以64位元寬或其他大小之運算元操作。此實例之封裝字格式320可長128位元且含有八個封裝字資料元素。各封裝字含有十六個資訊位元。圖3A之封裝雙字格式330可長128位元且含有四個封裝雙字資料元素。每一封裝雙字資料元素含有三十二個位元之資訊。封裝四倍字可為128個位元長且含有兩個封裝四倍字資料元素。
圖3B說明根據本發明之實施例的可能暫存器內資料儲存格式。每一封裝資料可包括多於一個的獨立資料元素。說明三個封裝資料格式:封裝半341、封裝單342及封裝雙343。封裝半341、封裝單342及封裝雙343之一個實施例含有固定點資料元素。對於另一實施例,封裝半341、封裝單342及封裝雙343中之一或多者可含有浮點資料元素。封裝半341之一個實施例可為128個位元長,含有八個16位元資料元素。封裝單342之一個實施例可為128個位元長且含有四個32位元資料元素。封裝雙343之一個實施例可為128個位元長且含有兩個64位元資料元素。應瞭解,此等封裝資料格式可進一步擴充至其他暫存器長度,例如,擴充至96位元、160位元、192位元、224位元、256位元或更大。
圖3C說明根據本發明之實施例的多媒體暫存器中之各種有正負號及無正負號的封裝資料類型表示。無正負號封裝位元組表示344說明無正負號封裝位元組在SIMD暫存器中之儲存。每一位元組資料元素之資訊可儲存於位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16以及最後位元組15之位元120至位元127中。因此,可使用暫存器中之所有可用位元。此儲存配置可增加處理器之儲存效率。同樣,在存取十六個資料元素之情況下,現可以並行方式對十六個資料元素執行一個操作。有正負號封裝位元組表示345說明有正負號封裝位元組之儲存。應注意,每一位元組資料元素之第八個位元可為正負號指示符。無正負號封裝字表示346說明字七至字零可如何儲存於SIMD暫存器中。有正負號封裝字表示347可類似於無正負號封裝字暫存器內表示346。應注意,每一字資料元素之第十六個位元可為正負號指示符。無正負號封裝雙字表示348展示如何儲存雙字資料元素。有正負號封裝雙字表示349可類似於無正負號封裝雙字暫存器內表示348。應注意,必要的正負號位元可為每一雙字資料元素之第三十二位元。
圖3D說明操作編碼(作業碼)之實施例。此外,格式360可包括暫存器/記憶體運算元定址模式,其與「IA-32 Intel Architecture Software Developer's Manual Volume 2: Instruction Set Reference」中所描述的一類型之作業碼格式對應,其可在全球資訊網(www)上在intel.com/design/litcentr自Intel Corporation (Santa Clara, CA) 獲得。在一個實施例中,且指令可藉由欄位361及362中之一或多者編碼。可每指令識別多達兩個運算元位置,包括多達兩個源運算元識別符364及365。在一個實施例中,目的地運算元識別符366可與源運算元識別符364相同,然而在其他實施例中,其可不同。在另一實施例中,目的地運算元識別符366可與源運算元識別符365相同,而在其他實施例中,其可不同。在一個實施例中,由源運算元識別符364及365識別的源運算元中之一者可被文字串比較操作之結果覆寫,而在其他實施例中,識別符364對應於源暫存器元素且識別符365對應於目的地暫存器元素。在一個實施例中,運算元識別符364及365可識別32位元或64位元之源運算元及目的地運算元。
圖3E說明根據本發明之實施例的具有四十或更多位元之另一可能操作編碼(作業碼)格式370。作業碼格式370與作業碼格式360對應且包含可選前綴位元組378。根據一個實施例之指令可由欄位378、371及372中之一或多者編碼。可藉由源運算元識別符374及375且藉由前綴位元組378來識別每個指令多達兩個運算元位置。在一個實施例中,前綴位元組378可用以識別32位元或64位元之源運算元及目的地運算元。在一個實施例中,目的地運算元識別符376可與源運算元識別符374相同,然而在其他實施例中,其可不同。對於另一實施例,目的地運算元識別符376可與源運算元識別符375相同,而在其他實施例中,其可不同。在一個實施例中,指令對由運算元識別符374及375識別之運算元中之一或多者操作,且由運算元識別符374及375識別之一或多個運算元可被指令結果覆寫,而在其他實施例中,由識別符374及375識別之運算元可被寫入至另一暫存器中之另一資料元素。作業碼格式360及370允許藉由MOD欄位363及373且藉由可選的比例-索引-基址及位移位元組部分地指定的暫存器至暫存器定址、記憶體至暫存器定址、藉由記憶體之暫存器定址、藉由暫存器之暫存器定址、立即暫存器定址、暫存器至記憶體定址。
圖3F說明根據本發明之實施例的又一可能操作編碼(作業碼)格式。64位元之單一指令多重資料(SIMD)算術運算可透過共處理器資料處理(CDP)指令來執行。操作編碼(作業碼)格式380描繪具有CDP作業碼欄位382和389的一個此CDP指令。對於另一實施例,CDP指令之類型,操作可由欄位383、384、387及388中之一或多者編碼。可每指令識別多達三個運算元位置,包括多達兩個源運算元識別符385及390及一個目的地運算元識別符386。共處理器之一個實施例可對八位元、十六位元、三十二位元及64位元之值操作。在一個實施例中,可對整數資料元素執行指令。在一些實施例中,可使用條件欄位381有條件地執行指令。對於一些實施例,源資料大小可藉由欄位383編碼。在一些實施例中,可對SIMD欄位進行零(Z)、負數(N)、進位(C)及溢位(V)偵測。對於一些指令,飽和類型可藉由欄位384編碼。
圖4A為說明根據本發明之實施例的有序管線及暫存器重命名階段、亂序發出/執行管線之方塊圖。圖4B為說明根據本發明之實施例的將包括於處理器中的有序架構核心及暫存器重命名邏輯、亂序發出/執行邏輯之方塊圖。圖4A中之實線框說明有序管線,而虛線框說明暫存器重命名、亂序發出/執行管線。類似地,圖4B中之實線框說明有序架構邏輯,而虛線框說明暫存器重命名邏輯及亂序發出/執行邏輯。
在圖4A中,處理器管線400可包括提取階段402、長度解碼階段404、解碼階段406、分配階段408、重命名階段410、排程(亦稱為分派或發出)階段412、暫存器讀取/記憶體讀取階段414、執行階段416、寫回/記憶體寫入階段418、例外狀況處置階段422及提交階段424。
在圖4B中,箭頭表示兩個或更多單元之間的耦接,且箭頭之方向指示彼等單元之間的資料流之方向。圖4B展示處理器核心490,其包括耦接至執行引擎單元450的前端單元430且該兩者可耦接至記憶體單元470。
核心490可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心或混合型或替代性核心類型。在一個實施例中,核心490可為專用核心,諸如網路或通訊核心、壓縮引擎、圖形核心或類似者。
前端單元430可包括耦接至指令快取單元434之分支預測單元432。指令快取單元434可耦接至指令轉譯後援緩衝器(TLB) 436。TLB 436可耦接至指令提取單元438,該指令提取單元耦接至解碼單元440。解碼單元440可解碼指令,且產生作為輸出的一或多個微操作、微碼入口點、微指令、其他指令或其他控制信號,前述各者可自原始指令解碼,或另外反映原始指令,或可自原始指令導出。可使用各種不同機制來實施解碼器。合適機制之實例包括(但不限於)查找表、硬體實施、可程式邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一個實施例中,指令快取單元434可進一步耦接至記憶體單元470中之2階(L2)快取記憶體單元476。解碼單元440可耦接至執行引擎單元450中之重命名/分配器單元452。
執行引擎單元450可包括耦接至引退單元454及一或多個排程器單元456之集合的重命名/分配器單元452。排程器單元456表示任何數目個不同排程器,包括保留站、中央指令窗等。排程器單元456可耦接至實體暫存器檔案單元458。實體暫存器檔案單元458中之各者表示一或多個實體暫存器檔案,其中之不同實體暫存器檔案儲存一或多個不同資料類型,諸如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點等,狀態(例如,作為待執行之下一個指令之位址的指令指標)等。實體暫存器檔案單元458可由引退單元154重疊以說明可實施暫存器重命名及亂序執行之各種方式(例如,使用一或多個重排序緩衝器及一或多個引退暫存器檔案,使用一或多個未來檔案、一或多個歷史緩衝器及一或多個引退暫存器檔案;使用暫存器映像及暫存器集區;等)。大體而言,架構暫存器可自處理器外部或自程式設計者之視角可見。暫存器可不限於任何已知特定類型之電路。各種不同類型之暫存器可為合適的,只要該等暫存器如本文中所描述地儲存及提供資料。合適暫存器之實例包括(但可不限於)專用實體暫存器、使用暫存器重命名的動態分配之實體暫存器、專用實體暫存器與動態分配之實體暫存器之組合等。引退單元454及實體暫存器檔案單元458可耦接至執行叢集460。執行叢集460可包括一或多個執行單元162之集合及一或多個記憶體存取單元464之集合。執行單元462可執行各種運算(例如,移位、加法、減法、乘法)且對各種類型之資料(例如,純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)執行各種運算。雖然一些實施例可包括專用於特定功能或功能集合之數個執行單元,但其他實施例可包括僅一個執行單元或全部執行所有功能之多個執行單元。排程器單元456、實體暫存器檔案單元458及執行叢集460經展示為可能複數個,此係因為某些實施例創建用於某些類型之資料/操作之單獨管線(例如,各自具有其自身排程器單元、實體暫存器檔案單元及/或執行叢集的純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線及/或記憶體存取管線,且在單獨記憶體存取管線之情況下,可實施僅此管線之執行叢集具有記憶體存取單元464之某些實施例)。亦應理解,在使用單獨管線之情況下,此等管線中之一或多者可為亂序發出/執行及剩餘部分為有序的。
記憶體存取單元464之集合可耦接至記憶體單元470,該記憶體單元可包括耦接至資料快取單元474之資料TLB單元472,該資料快取單元耦接至2階(L2)快取記憶體單元476。在一個例示性實施例中,記憶體存取單元464可包括載入單元、儲存位址單元及儲存資料單元,其中之各者可耦接至記憶體單元470中之資料TLB單元472。L2快取記憶體單元476可耦接至快取記憶體之一或多個其他層級且最終耦接至主記憶體。
以實例之方式,例示性暫存器重命名、亂序發出/執行核心架構可如下實施管線400: 1)指令提取438可執行提取階段402及長度解碼階段404;2)解碼單元440可執行解碼階段406;3)重命名/分配器單元452可執行分配階段408及重命名階段410;4)排程器單元456可執行排程階段412;5)實體暫存器檔案單元458及記憶體單元470可執行暫存器讀取/記憶體讀取階段414;執行叢集460可執行執行階段416;6)記憶體單元470及實體暫存器檔案單元458可執行寫回/記憶體寫入階段418;7)各種單元可參與執行異常處置階段422;且8)引退單元454及實體暫存器檔案單元458可執行提交階段424。
核心490可支援一或多個指令集(例如,x86指令集(其中已隨較新版本添加一些擴充);MIPS Technologies (Sunnyvale, CA)之MIPS指令集;ARM Holdings (Sunnyvale, CA)之ARM指令集(具有可選額外擴充,諸如NEON))。
應理解,核心可以多種方式支援多執行緒(執行操作或執行緒之兩個或更多個平行集合)。多執行緒支援可藉由(例如)包括時間分片多執行緒、同時多執行緒(其中單一實體核心為實體核心同時進行多執行緒處理的執行緒中之各者提供邏輯核心)或其組合來執行。此組合可包括(例如)時間分片提取及解碼,及其後的同時多執行緒處理,諸如,在Intel®超執行緒技術中。
雖然可在亂序執行之上下文中描述暫存器重命名,但應理解,暫存器重命名可用於有序架構中。雖然處理器之所說明實施例亦可包括單獨指令及資料快取單元434/474以及共用L2快取記憶體單元476,但其他實施例可具有用於指令及資料兩者之單一內部快取記憶體,諸如,1階(L1)內部快取記憶體或多個層級之內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與可在核心及/或處理器外部的外部快取記憶體之組合。在其他實施例中,所有快取記憶體可在核心及/或處理器外部。
圖5A為根據本發明之實施例的處理器500之方塊圖。在一個實施例中,處理器500可包括多核心處理器。處理器500可包括通訊耦接至一或多個核心502之系統代理510。此外,核心502及系統代理510可通訊耦接至一或多個快取記憶體506。核心502、系統代理510及快取記憶體506可經由一或多個記憶體控制單元552以通訊方式耦接。此外,核心502、系統代理510及快取記憶體506可經由記憶體控制單元552通訊耦接至圖形模組560。
處理器500可包括用於互連核心502、系統代理510及快取記憶體506與圖形模組560之任何合適機構。在一個實施例中,處理器500可包括基於環之互連單元508,以將核心502、系統代理510及快取記憶體506與圖形模組560互連。在其他實施例中,處理器500可包括用於互連此等單元之任何數目個熟知技術。基於環之互連單元508可利用記憶體控制單元552來促進互連。
處理器500可包括一記憶體階層,其包含核心內的一或多個層級之快取記憶體、一或多個共用快取單元(諸如快取記憶體506)或耦接至整合式記憶體控制器單元552之集合的外部記憶體(未圖示)。快取記憶體506可包括任何合適的快取記憶體。在一個實施例中,快取記憶體506可包括一或多個中間層級快取記憶體,諸如2階(L2)、3階(L3)、4階(L4)或其他層級之快取記憶體、末階快取記憶體(LLC)及/或其組合。
在各種實施例中,核心502中之一或多者可執行多執行緒處理。系統代理510可包括用於協調及操作核心502之組件。系統代理單元510可包括(例如)電力控制單元(PCU)。PCU可為或可包括調節核心502之電力狀態所需的邏輯及組件。系統代理510可包括用於驅動一或多個自外部連接之顯示器或圖形模組560之顯示引擎512。系統代理510可包括介面1214以用於針對圖形之通訊匯流排。在一個實施例中,介面1214可藉由高速PCI (PCIe)實施。在又一實施例中,介面1214可藉由高速圖形PCI (PEG)實施。系統代理510可包括直接媒體介面(DMI) 516。DMI 516可提供電腦系統之主機板或其他部分上之不同橋接器之間的連結。系統代理510可包括用於提供至計算系統之其他元件之PCIe連結之PCIe橋接器1218。PCIe橋接器1218可使用記憶體控制器1220及同調邏輯1222來實施。
核心502可以任何合適方式來實施。就架構及/或指令集而言,核心502可為均質或異質的。在一個實施例中,核心502中之一些可為有序的,而其他可為亂序的。在另一實施例中,核心502中之兩個或更多個核心可執行同一指令集,而其他核心可僅執行彼指令集中之一子集或一不同指令集。
處理器500可包括通用處理器,諸如,可購自Santa Clara, Calif.之Intel Corporation的Core™ i3、i5、i7、2 Duo及Quad、Xeon™、Itanium™、XScale™或StrongARM™處理器。處理器500可提供自另一公司,諸如ARM Holdings, Ltd、MIPS等。處理器500可為專用處理器,諸如,網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器或類似者。處理器500可實施於一或多個晶片上。處理器500可為一或多個基體之一部分及/或可使用許多處理技術中之任一者(諸如,BiCMOS、CMOS或NMOS)而實施於該一或多個基體上。
在一個實施例中,快取記憶體506中之給定者可由核心502中之多個核心共用。在另一實施例中,快取記憶體506中之給定者可專用於核心502中之一者。快取記憶體506至核心502之指派可藉由快取控制器或其他合適機構進行處置。藉由實施給定快取記憶體506之時間配量,快取記憶體506中之給定者可由兩個或更多個核心502共用。
圖形模組560可實施整合式圖形處理子系統。在一個實施例中,圖形模組560可包括圖形處理器。此外,圖形模組560可包括媒體引擎565。媒體引擎565可提供媒體編碼及視訊解碼。
圖5B為根據本發明之實施例的核心502之實例實施之方塊圖。核心502可包括以通訊方式耦接至亂序引擎580的前端570。核心502可透過快取記憶體階層503而以通訊方式耦接至處理器500之其他部分。
前端570可以任何合適方式來實施,諸如完全地或部分地藉由如上所述之前端201實施。在一個實施例中,前端570可透過快取記憶體階層503而與處理器500之其他部分通訊。在再一實施例中,前端570可自處理器500之部分提取指令且準備該等指令稍後在該等指令被傳遞至亂序執行引擎580時在處理器管線中使用。
亂序執行引擎580可以任何合適方式來實施,諸如,完全地或部分地藉由如上所述之亂序執行引擎203執行。亂序執行引擎580可使接收自前端570之指令準備好用於執行。亂序執行引擎580可包括分配模組582。在一個實施例中,分配模組582可對處理器500之資源或其他資源(諸如暫存器或緩衝器)進行分配以執行給定指令。分配模組582可在排程器(諸如,記憶體排程器、快排程器或浮點排程器)中進行分配。此等排程器在圖5B中可由資源排程器584來表示。分配模組582可完全地或部分藉由結合圖2所描述之分配邏輯實施。資源排程器584可基於給定資源之來源之就緒及執行指令所需的執行資源之可獲得性來判定指令何時準備好執行。資源排程器584可由(例如)如上文所論述之排程器202、204、206實施。資源排程器584可根據一或多個資源來排程指令之執行。在一個實施例中,此等資源可在核心502內部,且可說明為(例如)資源586。在另一實施例中,此等資源可在核心502外部且可藉由(例如)快取記憶體階層503可存取。資源可包括(例如)記憶體、快取記憶體、暫存器檔案或暫存器。在核心502內部之資源可由圖5B中之資源586來表示。在需要時,可透過例如快取記憶體階層503來協調寫入至資源586或自資源586讀取之值與處理器500之其他部分。當指令經指派資源時,該等指令可置放於重排序緩衝器588中。重排序緩衝器588可在指令經執行時追蹤該等指令,且基於處理器500之任何合適準則而選擇性重排序該等指令之執行。在一個實施例中,重排序緩衝器588可識別可獨立地執行的指令或一系列指令。此等指令或一系列指令可與其他此等指令並行地執行。核心502中之並行執行可由任何合適數目個單獨執行區塊或虛擬處理器執行。在一個實施例中,共用資源(諸如記憶體、暫存器及快取記憶體)可供給定核心502內之多個虛擬處理器存取。在其他實施例中,共用資源可供處理器500內之多個處理實體存取。
快取記憶體階層503可以任何合適方式實施。舉例而言,快取記憶體階層503可包括一或多個較低或中間層級快取記憶體,諸如快取記憶體572、574。在一個實施例中,快取記憶體階層503可包括通訊耦接至快取記憶體572、574之LLC 595。在另一實施例中,LLC 595可實施於供處理器500之所有處理實體可存取之模組590中。在又一實施例中,模組590可實施於來自Intel, Inc.之處理器之非核心模組中。模組590可包括核心502之執行必需的處理器500之部分或子系統,但可不實施於核心502內。除LLC 595外,模組590亦可包括(例如)硬體介面、記憶體同調性協調器、處理器間互連件、指令管線或記憶體控制器。對處理器500可用之RAM 599之存取可透過模組590且更具體言之LLC 595來進行。此外,核心502之其他執行個體可類似地存取模組590。可部分地透過模組590促進核心502之執行個體之協調。
圖6至圖8可說明適合於包括處理器500之例示性系統,而圖9可說明可包括核心502中之一或多者的例示性系統單晶片(SoC)。此項技術中已知的用於以下各者之其他系統設計及實施亦可為合適的:膝上型電腦、桌上型電腦、手持型PC、個人數位助理、工程化工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、蜂巢式電話、攜帶型媒體播放器、手持型裝置以及各種其他電子裝置。大體而言,很多種併有如本文所揭示之處理器及/或其他執行邏輯之系統或電子裝置可通常為合適的。
圖6說明根據本發明之實施例之系統600之方塊圖。系統600可包括可耦接至圖形記憶體控制器集線器(GMCH) 620之一或多個處理器610、615。在圖6中用虛線表示額外處理器615之可選性質。
各處理器610、615可為處理器500之某一版本。然而,應注意,整合式圖形邏輯及整合式記憶體控制單元可不存在於處理器610、615中。圖6說明GMCH 620可耦接至記憶體640,該記憶體640可為(例如)動態隨機存取記憶體(DRAM)。對於至少一個實施例,該DRAM可與非依電性快取記憶體相關聯。
GMCH 620可為晶片組或晶片組之一部分。GMCH 620可與處理器610、615通訊且控制處理器610、615與記憶體640之間的互動。GMCH 620亦可充當處理器610、615與系統600之其他元件之間的加速匯流排介面。在一個實施例中,GMCH 620經由多點匯流排(諸如前側匯流排(FSB) 695)與處理器610、615通訊。
此外,GMCH 620可耦接至顯示器645 (諸如平板顯示器)。在一個實施例中,GMCH 620可包括整合式圖形加速器。GMCH 620可進一步耦接至可用以將各種周邊裝置耦接至系統600之輸入/輸出(I/O)控制器集線器(ICH) 650。外部圖形裝置660可包括與另一周邊裝置670一起耦接至ICH 650之離散圖形裝置。
在其他實施例中,額外或不同的處理器亦可存在於系統600中。舉例而言,額外處理器610、615可包括可與處理器610相同之額外處理器、可與處理器610異質或不對稱之額外處理器、加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、場可程式閘陣列或任何其他處理器。就包括架構、微架構、熱、功率消耗特性及其類似者之一系列優點量度而言,實體資源610、615之間可存在多種差異。此等差異可有效地將自身顯現為處理器610、615間的不對稱性及異質性。對於至少一個實施例,各種處理器610、615可駐留於同一晶粒封裝中。
圖7說明根據本發明之實施例之第二系統700之方塊圖。如圖7中所示,多處理器系統700可包括點對點互連系統,且可包括經由點對點互連件750耦接之第一處理器770及第二處理器780。處理器770及780中之每一者可為處理器500之某一版本,如處理器610、615中之一或多者。
雖然圖7可說明兩個處理器770、780,但應理解,本發明之範疇不限於此。在其他實施例中,一或多個額外處理器可存在於給定處理器中。
處理器770及780經展示為分別包括整合式記憶體控制器單元772及782。處理器770亦可包括作為其匯流排控制器單元之部分的點對點(P-P)介面776及778;類似地,第二處理器780可包括P-P介面786及788。處理器770、780可使用P-P介面電路778、788經由點對點(P-P)介面750交換資訊。如圖7中所示,IMC 772及782可將該等處理器耦接至各別記憶體(即,記憶體732及記憶體734),該等記憶體在一個實施例中可為本端附接至各別處理器之主記憶體之部分。
處理器770、780可各自使用點對點介面電路776、794、786、798經由個別P-P介面752、754與晶片組790交換資訊。在一個實施例中,晶片組790亦可經由高效能圖形介面739而與高效能圖形電路738交換資訊。
共用快取記憶體(未圖示)可包括於兩個處理器中之任一者中或在兩個處理器外部;又經由P-P互連件與處理器連接,使得可將兩個處理器中之任一者或兩者之本端快取記憶體資訊儲存於共用快取記憶體中(若處理器置放於低功率模式中)。
晶片組790可經由介面796耦接至第一匯流排716。在一個實施例中,第一匯流排716可為周邊組件互連(PCI)匯流排,或諸如PCI高速匯流排或另一第三代I/O互連件匯流排之匯流排,但本發明之範疇不限於此。
如圖7中所示,各種I/O裝置714可與匯流排橋接器718一起耦接至第一匯流排716,該匯流排橋接器718將第一匯流排716耦接至第二匯流排720。在一個實施例中,第二匯流排720可為低接腳計數(LPC)匯流排。在一個實施例中,各種裝置可耦接至第二匯流排720,包括(例如)鍵盤及/或滑鼠722、通訊裝置727及儲存單元728(諸如,磁碟機或可包括指令/程式碼及資料730之其他大容量儲存裝置)。另外,音訊I/O 724可耦接至第二匯流排720。應注意,其他架構可為可能的。舉例而言,替代圖7之點對點架構,系統可實施多點匯流排或其他此架構。
圖8說明根據本發明之實施例之第三系統700之方塊圖。圖7及圖8中之類似元件帶有類似參考數字,且已自圖8省略圖7之特定態樣,以便避免混淆圖8之其他態樣。
圖8說明處理器770、780可分別包括整合式記憶體及I/O邏輯控制(「CL」) 772及782。對於至少一個實施例,CL 772、782可包括整合式記憶體控制器單元,諸如上文關於圖5及圖7所描述之整合式記憶體控制器單元。另外,CL 772、782亦可包括I/O邏輯控制。圖8說明不僅記憶體732、734可耦接至CL 872、882,而且I/O裝置814亦可耦接至邏輯控制772、782。舊式I/O裝置815可耦接至晶片組790。
圖9說明根據本發明之實施例之SoC 900之方塊圖。圖5中之類似元件帶有類似參考數字。又,虛線框可表示更高階SoC上之可選特徵。互連單元902耦接至以下各者:應用程式處理器910,其包括一或多個核心502A至502N之集合及共用快取記憶體單元506;系統代理單元912;匯流排控制器單元916;整合式記憶體控制器單元914;可包括整合式圖形邏輯908之一或多個媒體處理器920的集合、用於提供靜態及/或視訊攝影機功能性之影像處理器924、用於提供硬體音訊加速之音訊處理器926、及用於提供視訊編碼/解碼加速之視訊處理器928;靜態隨機存取記憶體(SRAM)單元930;直接記憶體存取(DMA)單元932;及用於耦接至一或多個外部顯示器之顯示單元940。
圖10說明根據本發明之實施例的可執行至少一個指令之處理器,其含有中央處理單元(CPU)及圖形處理單元(GPU)。在一個實施例中,用以執行根據至少一個實施例之操作的指令可由CPU執行。在另一實施例中,該指令可由GPU執行。在又一實施例中,該指令可透過藉由GPU及CPU執行之操作的組合執行。舉例而言,在一個實施例中,根據一個實施例之指令可經接收及解碼以供在GPU上執行。然而,經解碼指令內之一或多個操作可由CPU執行且結果經返回至GPU以用於該指令之最終引退。相反,在一些實施例中,CPU可充當主要處理器且GPU充當共處理器。
在一些實施例中,受益於高度平行輸送量處理器之指令可由GPU執行,而受益於處理器效能(受益於深度管線化架構)之指令可由CPU執行。舉例而言,圖形、科學應用程式、金融應用程式及其他平行工作負載可受益於GPU之效能且因此經執行,而較有序應用程式(諸如,作業系統核心程式或應用程式碼)可更適合於CPU。
在圖10中,處理器1000包括CPU 1005、GPU 1010、影像處理器1015、視訊處理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、顯示裝置1040、記憶體介面控制器1045、MIPI控制器1050、快閃記憶體控制器1055、雙資料速率(DDR)控制器1060、安全引擎1065及I2 S/I2 C控制器1070。圖10之處理器中可包括其他邏輯及電路,包括更多CPU或GPU及其他周邊介面控制器。
至少一個實施例之一或多個態樣可藉由儲存於機器可讀媒體上之代表性資料實施,該代表性資料表示處理器內的在藉由機器讀取時使機器製造用以執行本文中所描述之技術的邏輯的各種邏輯。稱為「IP核心」之此等表示可儲存於有形機器可讀媒體(「磁帶」)上,且將其供應至各種消費者或製造設備以載入至實際上製造邏輯或處理器之製造機器中。舉例而言,IP核心(諸如,由ARM Holdings, Ltd.開發之Cortex™系列處理器及由中國科學院之計算技術研究所(ICT)開發之Loongson IP核心)可經許可或出售給各種消費者或使用人(諸如,Texas Instruments、Qualcomm、Apple或Samsung)且實施於由此等消費者或使用人生產之處理器中。
圖11說明方塊圖,其說明根據本發明之實施例的IP核心之開發。儲存器1130可包括模擬軟體1120及/或硬體或軟體模型1110。在一個實施例中,表示IP核心設計之資料可經由記憶體1140 (例如硬碟)、有線連接(例如網際網路) 1150或無線連接1160提供至儲存器1130。可接著將由模擬工具及模型產生之IP核心資訊傳輸至製造設施,在該製造設施處,可藉由第3方製造該IP核心以執行根據至少一個實施例之至少一個指令。
在一些實施例中,一或多個指令可對應於第一類型或架構(例如,x86)且在不同類型或架構(例如,ARM)之處理器上進行轉譯或仿真。根據一個實施例之指令因此可在包括ARM、x86、MIPS、GPU或其他處理器類型或架構的任何處理器或處理器類型上執行。
圖12說明根據本發明之實施例的第一類型之指令可如何由不同類型之處理器進行仿真。在圖12中,程式1205含有可執行與根據一個實施例之指令相同或實質上相同之功能的一些指令。然而,程式1205之指令可為與處理器1215不同或不相容之類型及/或格式,此意謂程式1205中之類型的指令可不能夠由處理器1215原生地執行。然而,藉助於仿真邏輯1210,程式1205之指令可轉譯成原生地可藉由處理器1215執行之指令。在一個實施例中,可以硬體體現仿真邏輯。在另一實施例中,可以有形機器可讀媒體體現仿真邏輯,該有形機器可讀媒體含有用以將程式1205中之類型的指令轉譯成原生地可由處理器1215執行之類型。在其他實施例中,仿真邏輯可為固定功能或可程式硬體與儲存於有形機器可讀媒體上之程式之組合。在一個實施例中,處理器含有仿真邏輯,而在其他實施例中,仿真邏輯存在於處理器外且可由第三方提供。在一個實施例中,處理器可藉由執行含於處理器中或與處理器相關聯之微碼或韌體來載入體現於含有軟體之有形機器可讀媒體中的仿真邏輯。
圖13為根據本發明之實施例之對比使用軟體指令轉換器來將源指令集中之二進位指令轉換為目標指令集中之二進位指令的方塊圖。在所說明之實施例中,指令轉換器為軟體指令轉換器,但替代性地指令轉換器可以軟體、韌體、硬體或其各種組合來實施。圖13展示,可使用x86編譯器1304來編譯以高級語言1302撰寫之程式以產生x86二進位程式碼1306,該二進位程式碼原生地可由具有至少一個x86指令集核心之處理器1316執行。具有至少一個x86指令集核心之處理器1316表示藉由相容地執行或以其他方式處理以下各者以便達成與具有至少一個x86指令集核心之Intel處理器實質上相同的結果而可執行與具有至少一個x86指令集核心之Intel處理器實質上相同的功能的任何處理器:(1)Intel x86指令集核心之指令集的實質部分,或(2)目標為執行於具有至少一個x86指令集核心之Intel處理器上的應用程式或其他軟體之目標程式碼版本。x86編譯器1304表示可操作以產生x86二進位程式碼1306 (例如,目標程式碼)之編譯器,該二進位程式碼可在具有或不具有額外連結處理之情況下在具有至少一個x86指令集核心之處理器1316上執行。類似地,圖13展示可使用替代指令集編譯器1308來編譯以高級語言1302撰寫之程式以產生替代指令集二進位程式碼1310,該替代指令集二進位程式碼可原生地由不具有至少一個x86指令集核心之處理器1314 (例如,具有執行MIPS Technologies (Sunnyvale, CA)之MIPS指令集及/或執行ARM Holdings (Sunnyvale, CA)之ARM指令集的核心的處理器)執行。
指令轉換器1312用以將x86二進位程式碼1306轉換成原生地可由不具有x86指令集核心之處理器1314執行的替代指令集二進位程式碼1311。此經轉換程式碼可或可不與由替代指令集編譯器1308產生之替代指令集二進位程式碼1310相同;然而,該經轉換程式碼將實現相同的一般操作且由來自替代指令集之指令構成。因此,指令轉換器1312表示透過仿真、模擬或任何其他程序而允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二進位程式碼1306的軟體、韌體、硬體或其組合。
圖14為根據本發明之實施例的處理器之指令集架構1400之方塊圖。指令集架構1400可包括任何合適數目或種類之組件。
舉例而言,指令集架構1400可包括處理實體,諸如一或多個核心1406、1407及圖形處理單元1415。核心1406、1407可透過任何合適機構(諸如透過匯流排或快取記憶體)而以通訊方式耦接至指令集架構1400之其餘部分。在一個實施例中,核心1406、1407可經由L2快取控制件1408 (其可包括匯流排介面單元1409及L2快取記憶體1410)以通訊方式耦接。核心1406、1407及圖形處理單元1415可透過互連件1410以通訊方式耦接至彼此及指令集架構1400之剩餘部分。在一個實施例中,圖形處理單元1415可使用定義特定視訊信號藉以編碼及解碼以供輸出之方式的視訊程式碼1420。
指令集架構1400亦可包括用於與電子裝置或系統之其他部分介接或通訊的任何數目或種類之介面、控制器或其他機構。此等機構可促進與(例如)周邊裝置、通訊裝置、其他處理器或記憶體之互動。在圖14之實例中,指令集架構1400可包括液晶顯示器(LCD)視訊介面1425、用戶介面模組(SIM)介面1430、啟動ROM介面1435、同步動態隨機存取記憶體(SDRAM)控制器1440、快閃控制器1445及串列周邊介面(SPI)主控單元1450。LCD視訊介面1425可將視訊信號之輸出自(例如) GPU 1415且透過(例如)行動產業處理器介面(MIPI) 1490或高清晰度多媒體介面(HDMI) 1495而提供至顯示器。此顯示器可包括例如LCD。SIM介面1430可提供至或自SIM卡或裝置之存取。SDRAM控制器1440可提供至或自諸如SDRAM晶片或模組之記憶體之存取。快閃控制器1445可提供至或自諸如快閃記憶體或RAM之其他執行個體之記憶體之存取。SPI主控單元1450可提供至或自通訊模組(諸如,實施諸如802.11之通訊標準的藍芽模組1470、高速3G數據機1475、全球定位系統模組1480或無線模組1485)的存取。
圖15為根據本發明之實施例的處理器之指令集架構1500之更詳細方塊圖。指令架構1500可實施指令集架構1400之一或多個態樣。此外,指令集架構1500可說明供指令在處理器內執行之模組及機制。
指令架構1500可包括以通訊方式耦接至一或多個執行實體1565之記憶體系統1540。此外,指令架構1500可包括以通訊方式耦接至執行實體1565及記憶體系統1540之快取及匯流排介面單元,諸如單元1510。在一個實施例中,指令至執行實體1564中之載入可藉由一或多個執行階段來執行。此等階段可包括例如指令預取階段1530、雙指令解碼階段1550、暫存器重命名階段155、發出階段1560及寫回階段1570。
在另一實施例中,記憶體系統1540可包括引退指標1582。引退指標1582可儲存識別最後引退之指令的程式次序(PO)之值。引退指標1582可由(例如)引退單元454來設定。若尚未引退指令,則引退指標1582可包括空值。
執行實體1565可包括任何合適數目及種類之機制,處理器可藉由該等機制來執行指令。在圖15之實例中,執行實體1565可包括ALU/乘法單元(MUL) 1566、ALU 1567及浮點單元(FPU) 1568。在一個實施例中,此等實體可利用含於給定位址1569內之資訊。執行實體1565與階段1530、1550、1555、1560、1570組合可共同地形成執行單元。
單元1510可以任何合適方式實施。在一個實施例中,單元1510可執行快取控制。在此實施例中,單元1510可因此包括快取記憶體1525。在又一實施例中,快取記憶體1525可實施為具有任何合適大小之L2統一快取記憶體,諸如零、128k、256k、512k、1M或2M位元組之記憶體。在另一另外實施例中,快取記憶體1525可實施於錯誤校正程式碼記憶體中。在另一實施例中,單元1510可執行至處理器或電子裝置之其他部分的匯流排介接。在此實施例中,單元1510因此可包括用於經由互連件、處理器內匯流排、處理器間匯流排或其他通訊匯流排、埠或線路進行通訊之匯流排介面單元1520。匯流排介面單元1520可提供介接以便執行(例如)記憶體及輸入/輸出位址之產生以用於在執行實體1565與系統的在指令架構1500外之部分之間傳送資料。
為進一步有助於其功能,匯流排介面單元1520可包括用於產生中斷及至處理器或電子裝置之其他部分之通訊的中斷控制及分佈單元1511。在一個實施例中,匯流排介面單元1520可包括處置快取記憶體存取及多個處理核心之同調性的窺探控制單元1512。在又一實施例中,為提供此功能性,窺探控制單元1512可包括處置不同快取記憶體之間的資訊交換之快取記憶體至快取記憶體傳送單元。在另一另外實施例中,窺探控制單元1512可包括一或多個窺探過濾器1514,其監視其他快取記憶體(未圖示)之同調性,使得快取控制器(諸如單元1510)不一定必須直接執行此監視。單元1510可包括用於使指令架構1500之動作同步之任何合適數目個計時器1515。此外,單元1510可包括AC埠1516。
記憶體系統1540可包括用於儲存指令架構1500之處理需求之資訊的任何合適數目及種類之機構。在一個實施例中,記憶體系統1504可包括用於儲存資訊之載入儲存單元1530,諸如寫入至記憶體或暫存器或自記憶體或暫存器讀取之緩衝器。在另一實施例中,記憶體系統1504可包括轉譯後援緩衝器(TLB)1545,其提供位址值在實體位址與虛擬位址之間的查找。在又一實施例中,匯流排介面單元1520可包括用於促進對虛擬記憶體之存取的記憶體管理單元(MMU) 1544。在另外又一實施例中,記憶體系統1504可包括預取器1543,其用於在指令實際上需要執行之前向記憶體請求該等指令,以便減小潛時。
用以執行指令的指令架構1500之操作可透過不同階段來執行。舉例而言,使用單元1510,指令預取階段1530可透過預取器1543來存取指令。可將擷取到之指令儲存於指令快取記憶體1532中。預取階段1530可實現用於快速迴路模式之選項1531,其中將執行形成足夠小以在給定快取記憶體內適合之迴路之一系列指令。在一個實施例中,可執行此執行而不必自(例如)指令快取記憶體1532存取額外指令。對預取哪些指令之判定可藉由(例如)分支預測單元1535來進行,該分支預測單元1535可存取全域歷史1536中之執行之指示、目標位址1537之指示或返回堆疊1538之內容,以判定接下來將執行程式碼之分支1557中的哪一個。可能可預取此等分支以作為結果。分支1557可透過如下所述的操作之其他階段產生。指令預取階段1530可將指令以及關於未來指令之任何預測提供至雙指令解碼階段。
雙指令解碼階段1550可將接收之指令轉譯成可執行的基於微碼之指令。雙指令解碼階段1550在每個時脈循環同時解碼兩個指令。此外,雙指令解碼階段1550可將其結果傳遞至暫存器重命名階段1555。另外,雙指令解碼級1550可根據其解碼及微碼之偶發性執行來判定任何所得分支。此等結果可輸入至分支1557中。
暫存器重命名階段1555可將對虛擬暫存器或其他資源之參考轉譯成對實體暫存器或資源之參考。暫存器重命名階段1555可包括此映射在暫存器集區1556中之指示。暫存器重命名階段1555可在接收到指令時更改該等指令且將結果發送至發出階段1560。
發出階段1560可將命令發出或分派至執行實體1565。此發出可以亂序方式執行。在一個實施例中,可在執行多個指令之前將該等指令保持在發出階段1560。發出階段1560可包括用於保持此等多個命令之指令佇列1561。基於任何可接受準則(諸如用於執行給定指令的資源之可獲得性或適用性),指令可藉由發出階段1560發出至特定處理實體1565。在一個實施例中,發出階段1560可對指令佇列1561內之資料進行重排序,以使得所接收之第一指令可不為被執行之第一指令。基於指令佇列1561之排序,可將額外分支資訊提供至分支1557。發出階段1560可將指令傳遞至執行實體1565以供執行。
在執行後,寫回階段1570可將資料寫入至暫存器、佇列或指令集架構1500之其他結構中,以傳達給定命令之完成。視配置在發出階段1560中之指令之次序而定,寫回階段1570之操作可使額外指令能夠被執行。指令集架構1500之執行可藉由追蹤單元1575來監視或除錯。
圖16為根據本發明之實施例的用於處理器之指令集架構之執行管線1600之方塊圖。執行管線1600可說明(例如) 圖15之指令架構1500之操作。
執行管線1600可包括步驟或操作之任何合適組合。在1605中,可進行對接下來將執行之分支之預測。在一個實施例中,此等預測可基於指令之先前執行及其結果。在1610中,可將對應於預測的執行分支之指令載入至指令快取記憶體中。在1615中,可提取指令快取記憶體中之一或多個此等指令以供執行。在1620中,可將已經提取之指令經解碼成微碼或更特定之機器語言。在一個實施例中,可同時解碼多個指令。在1625中,可重新指派經解碼指令內對暫存器或其他資源之參考。舉例而言,可用對對應實體暫存器之參考替換對虛擬暫存器之參考。在1630中,可將指令分派至佇列以供執行。在1640中,可執行該等指令。可以任何合適方式來執行此執行。在1650中,可將該等指令發出至合適的執行實體。藉以執行該等指令之方式可取決於執行指令之特定實體。舉例而言,在1655,ALU可執行算術功能。ALU可將單一時脈循環用於其操作,以及利用兩個移位器。在一個實施例中,可使用兩個ALU,且因此,在1655可執行兩個指令。在1660,可進行對所得分支之判定。程式計數器可用以指明分支將到達之目的地。1660可在單一時脈循環內執行。在1665,可藉由一或多個FPU來執行浮點算術。浮點運算可需要執行多個時脈循環,諸如兩個至十個循環。在1670,可執行乘法及除法運算。此等運算可在四個時脈循環中執行。在1675,可執行至管線1600之暫存器或其他部分之載入及儲存操作。該等操作可包括載入及儲存位址。此等操作可在四個時脈循環中執行。在1680,可如1655至1675之所得操作所需地執行寫回操作。
圖17為根據本發明之實施例的用於利用處理器1710之電子裝置1700之方塊圖。電子裝置1700可包括例如筆記型電腦、超級本、電腦、塔伺服器、架伺服器、刀鋒伺服器、膝上型電腦、桌上型電腦、平板電腦、行動裝置、電話、嵌入式電腦或任何其他合適的電子裝置。
電子裝置1700可包括以通訊方式耦接至任何合適數目或種類之組件、周邊裝置、模組或裝置的處理器1710。此耦接可藉由諸如以下各者的任何合適種類之匯流排或介面來實現:I2 C匯流排、系統管理匯流排(SMBus)、低接腳計數(LPC)匯流排、SPI、高清晰度音訊(HDA)匯流排、串列進階附接技術(SATA)匯流排、USB匯流排(版本1、2、3)或通用非同步接收器/傳輸器(UART)匯流排。
此等組件可包括例如顯示器1724、觸控螢幕1725、觸控板1730、近場通訊(NFC)單元1745、感測器集線器1740、熱感測器1746、高速晶片組(EC) 1735、受信任平台模組(TPM) 1738、BIOS/韌體/快閃記憶體1722、數位信號處理器1760、碟機1720 (諸如固態磁碟(SSD)或硬碟機(HDD))、無線區域網路(WLAN)單元1750、藍芽單元1752、無線廣域網路(WWAN)單元1756、全球定位系統(GPS)、攝影機1754 (諸如USB 3.0攝影機)或以(例如)LPDDR3標準實施之低功率雙資料速率(LPDDR)記憶體單元1715。此等組件各自可以任何合適方式實施。
此外,在各種實施例中,其他組件可透過上文所論述之組件以通訊方式耦接至處理器1710。舉例而言,加速度計1741、環境光感測器(ALS) 1742、羅盤1743及陀螺儀1744可以通訊方式耦接至感測器集線器1740。熱感測器1739、風扇1737、鍵盤1746及觸控板1730可以通訊方式耦接至EC 1735。揚聲器1763、頭戴式耳機1764及麥克風1765可以通訊方式耦接至音訊單元1764,該音訊單元又可以通訊方式耦接至DSP 1760。音訊單元1764 可包括(例如)音訊編解碼器及D類放大器。SIM卡1757可以通訊方式耦接至WWAN單元1756。諸如WLAN單元1750及藍芽單元1752之組件以及WWAN單元1756可以下一代外觀尺寸(NGFF)實施。
現參看圖18,其展示可根據本發明之一實施例之方法之流程圖。更具體而言,圖18中所示之方法1800可藉由編譯器邏輯執行以在處理器上執行,該編譯器諸如將自傳入源程式碼產生機器碼的靜態或動態編譯器。如所說明,方法1800開始於識別至少一個具有用於依序處置之編譯器指引之變數(區塊1810)。如本文所描述,程式碼內之一或多個變數可經識別為待依序處置之特定資料類型。因此,此識別可基於(例如)用於變數之定義陳述之前置項,其為編譯器識別變數將以依序方式處置。
接下來,控制至其中源程式碼中之一或多個載入/儲存指令可經識別為與此等依序變數(若存在)中之一或多者相關聯之區塊1820的遍次。舉例而言,可識別源程式碼內之各種載入/儲存指令。編譯器可自該等經識別之指令判定該等指令中之任一者是否涉及待按依序方式處置之變數。在此情況下,控制至其中可針對此等經識別之指令利用依序載入/儲存操作產生機器碼之區塊1830的遍次。在本文所描述之實施例中,此機器碼可利用編碼此等依序操作之特殊作業碼類型實施。最後,在區塊1840處,可自編譯器發射經編譯機器碼。在實施例中可在基礎處理器架構(例如x86處理器)之組合語言中的此經編譯之機器碼可儲存於給定儲存器中。舉例而言,此經編譯程式可儲存於資料庫中。可自該處存取資料庫以獲得對應於程式之程式碼,其可接著經提供(例如)至諸如消費者之遠端源,其試圖自遠端資料庫下載給定應用程式。當然在其他個例中,編譯器可在將儲存且接著稍後執行機器碼之系統上本端式執行。應理解,儘管在圖18之實施例中以此高階方式展示,但許多變化及替代方案係可能的。
現參看圖19,其展示根據本發明之另一實施例之方法之流程圖。在圖19之實施例中,方法1900可藉由硬體、軟體及/或韌體之組合執行,包括諸如處理器內之邏輯之硬體電路,包括諸如指令解碼器、發出邏輯等之前端單元以及諸如處理器內之一或多個載入/儲存執行單元的一或多個執行單元。如所說明,方法1900開始於接收並在解碼器中解碼有序載入/儲存指令(區塊1910)。其後將此經解碼指令提供至排程器(區塊1920)。在實施例中,此排程器可實施於處理器之前端部分之一或多個邏輯或單元,諸如排程邏輯、發出邏輯、排序邏輯等。
接下來判定在排程區塊中是否存在先前有序載入/儲存指令(菱形1930)。在實施例中,此排程區塊可包含在指令排程床或區塊內一起排程之給定數目之指令。若判定存在一或多個先前有序載入/儲存指令,則在此類先前有序載入/儲存指令之後控制至其中可對經解碼有序載入/儲存指令進行排序之區塊1940的遍次。
否則,如在菱形1930處判定在排程區塊內不存在此類先前指令,則控制至判定在排程區塊內是否存在後續有序載入/儲存指令的菱形1950的遍次。若是,控制至其中在後續有序載入/儲存指令之前對經解碼有序載入/儲存指令進行排序之區塊1960的遍次。
仍參看圖19,控制自區塊1940及1960及菱形1950中之兩者至區塊1970的遍次。在區塊1970處,可將經解碼有序載入/儲存指令儲存於具有優先權指示符之就緒佇列中。在其中提供並使用此優先權指示符之實施例中,指示符可向排程邏輯指示有序載入/儲存指令將具有優於其他非有序指令之優先權。
仍參看圖19,接下來在區塊1980處,可依序對排程區塊內之任何有序載入/儲存指令進行排程。另外,可對此等指令優先(其如上文所論述可具有優先權指示符)排程,例如在非有序指令之前。最後,在區塊1990處,此等指令可在給定執行單元(例如,給定載入/儲存單元)內執行並引退。應理解,儘管在圖19之實施例中以此高階方式展示,但許多變化及替代方案係可能的。
如上文所描述,指令產生、識別及執行之許多變化係可能的。現參看圖20,其展示根據實施例的用於編譯器執行之方法的流程圖。如圖20中所說明,方法2000可藉由待於處理器上執行之編譯器邏輯(諸如給定的靜態或執行時間編譯器)執行。所所見,方法2000開始於判定在(例如經靜態或動態編譯之源程式碼程式之)指令串流內接收之指令是否為載入/儲存操作(菱形2010)。若否,則將給定操作轉譯為機器碼(區塊2050)。舉例而言,給定源程式碼操作可經轉譯為可實施為一或多個組合指令之機器碼。
仍參看圖20,若相反在菱形2010處判定所接收之指令為載入/儲存操作,則控制至用以判定與載入/儲存操作相關聯之任何運算元是否用關鍵字標記之菱形2020的遍次。在實施例中,此關鍵字可為前綴程式碼或符號以向編譯器提供此運算元(或位址範圍)將依序處置之指引。若在載入/儲存操作內識別到此運算元/位址範圍,則控制至其中依序載入/儲存指令可用以表示此載入/儲存操作之區塊2040的遍次。控制至區塊2050的接下來的遍次,如上文所論述。否則,控制自菱形2020至其中標準載入/儲存指令可用以表示操作之區塊2030的遍次(且其後控制至區塊2050之遍次)。儘管在圖20之實施例中以此高階方式展示,但許多變化及替代方案係可能的。
現參看圖21,其展示根據本發明之實施例的用於解碼指令之方法之流程圖。如圖21中所見,方法2100可至少部分地藉由硬體電路(諸如處理器之前端單元之解碼邏輯)執行。如所說明,方法2100開始於解碼給定指令及標記該指令之屬性及相依性(區塊2110)。
接下來判定指令是否為依序指令(菱形2120)。若否,則控制至區塊2130之遍次,其中此經解碼指令可添加至處理器資料結構(諸如,處理器之發出邏輯內之儲存期),該發出邏輯可耦接至解碼邏輯之下游或其他資料結構類清單(例如,重排序緩衝器,取決於微架構)。
應注意,若相反判定經解碼指令為依序指令(如在菱形2120處判定),則控制至區塊2140之遍次。在區塊2140處,可將指令添加至依序經解碼指令佇列,其可為先進先出(FIFO)佇列。此佇列中之器儲存確保控制指令中之排序。亦即,按程式次序之第一指令將在佇列前方,第二指令在第二位置,等等。如上,此佇列可存在於處理器之發出邏輯中。應注意,方法2100可針對穿入指令重複執行以因此識別且專門處置包含無序指令之指令串流內之有序指令(且亦可能處置有序指令)且將執行於亂序處理器中。
現參看圖22,其展示根據本發明之實施例之方法之流程圖。更具體而言,方法2200可藉由硬體電路(諸如處理器之用以將指令發出至一或多個執行單元的發出邏輯)執行。如所見,方法2200開始於判定是否存在執行中之有序指令(意謂指令存在於處理器內,包括在寫回緩衝器中) (菱形2210)。若是,則控制至其中處理器之發出邏輯可自標準發出資料結構中可用之標準/亂序指令之集區執行指令發出的區塊2250之遍次。在指令之標準發出中,除非兩個指令共用相同處理器資源,否則發出給定指令以執行供執行之邏輯。若兩個指令之潛時不同(例如,指令之定址模式不同),則該等指令可亂序執行;或處理器使用在管線與匯流排介面單元之間的寫入緩衝器。
否則,若無執行中之有序指令,則控制至菱形2220之遍次。在菱形2220處,則可判定是否存在在就緒佇列內可用之任何依序指令。若否,則控制至區塊2250之遍次,如上文所論述。如相反存在可用的依序指令,則控制至其中可判定是否可發出指令之菱形2230。此判定可基於(例如)是否已執行先前的依序指令。作為一實例,假定依序指令所需之運算元中之一者正由執行階段中之前一亂序指令計算,或即使置放於執行階段中,尚無先決條件亂序指令。大體而言,在菱形2230處,如對亂序指令執行檢查。若在菱形2230處判定無法發出指令,則控制至上文所論述之區塊2250的遍次。若在菱形2230處判定可發出指令,則控制至其中發出指令至所選擇執行單元或邏輯的區塊2240的遍次。應理解,儘管在圖22之實施例中以此高階方式展示,但許多變化及替代方案係可能的。
現參看圖23,其展示根據實施例之處理器之一部分之方塊圖。在圖23之實施例中,展示處理器2300之管線之部分,該處理器為亂序處理器。如所說明,解碼單元2310經組配以接收傳入指令,例如接收自提取單元之巨型指令,並在經微寫碼情況下將此等指令解碼成一或多個微操作(μops)。對於硬體解碼情況,此階段之輸出為一系列控制信號。取決於指令類型,解碼單元2310將經解碼指令提供至發出單元2320內之多個位置中之一者。
更具體而言,如圖23中所見,發出單元2320包括用於儲存依序指令之第一佇列2322及用於儲存其他指令之第二儲存器2324。大體而言,此等儲存器係儲存經解碼指令及關於運算元位置之運算元/資訊。第一佇列2322係用於儲存經解碼依序指令,且可實施為FIFO佇列。第二儲存器2324係用於儲存其他經解碼指令。因此,嚴格按解碼次序發出依序指令。在另一實施例中,佇列2322可藉由添加指示其為(或部位)依序指令的指示符及表示自解碼單元2310之到達次序的另一者(例如,3至4位元符記數目)而實施為處理器資料結構2324之部分(其可為一些x86架構中之重排序緩衝器(ROB))。
當選擇給定指令以供執行時,將該給定指令自儲存器2322及2324中之一者提供至多個執行單元2330中之給定者。取決於指令之類型,可將操作提供至特定執行單元。雖然本發明之範疇在此方面不受限制,但執行單元2330可包括整數執行單元、浮點執行單元、向量執行單元、載入/儲存執行單元,以及潛在的其他此類執行單元。雖然為了便於說明而展示為具有此等有限管線部分,但應理解,處理器之完全管線可包括額外管線單元及其他邏輯。
以下實例係關於另外的實施例。
在一個實例中,處理器包含:核心,其包含亂序管線,該亂序管線包括解碼邏輯、發出經解碼指令之發出邏輯,及執行程式之經發出指令之至少一個執行邏輯,其中該至少一個執行邏輯用以亂序執行該程式之至少一些指令,該解碼邏輯用以解碼該程式之第一依序記憶體指令並將該經解碼第一依序記憶體指令提供至該發出邏輯,該發出邏輯用以將該第一依序記憶體指令排序在該程式之第二依序記憶體指令之前,該第一依序記憶體指令為該程式之一原始版本中之一無序指令。
在一實例中,第一依序記憶體指令用以實現對於程式之記憶體映射輸入/輸出存取,其中該程式包含嵌入式控制應用程式。
在一實例中,第一依序記憶體指令及第二依序記憶體指令包含記憶體映射輸入/輸出操作。
在一實例中,發出邏輯用以利用高於第二依序記憶體指令之優先權將第一依序記憶體指令發出至執行邏輯。
在一實例中,編譯器邏輯用以至少部分地基於與無序記憶體指令之至少一個運算元相關聯之一識別符自程式之無序記憶體指令產生第一依序記憶體指令。
在一實例中,編譯器邏輯用以產生具有與用於無序記憶體指令的機器碼不同的機器碼的第一依序記憶體指令。
在一實例中,編譯器邏輯用以回應於變數宣告之指引指示符而產生第一依序記憶體指令,其中無序記憶體指令之運算元對應於變數宣告中之變數。
在一實例中,發出邏輯包含:第一儲存器,其用以儲存待決依序記憶體指令;及第二儲存器,其用以儲存待決無序指令。
在一實例中,解碼邏輯用以將該第一依序記憶體指令提供至該發出邏輯之該第一儲存器,該第一儲存器包含第一先進先出佇列。
在一實例中,該執行邏輯包含用以執行該第一依序記憶體指令之至少一個載入/儲存執行單元。
應注意,以上處理器可使用各種手段來實施。
在一實例中,該處理器包含併入於使用者設備觸摸啟用之裝置中的SoC。
在另一實例中,一種系統包含一顯示器及一記憶體,並包括以上實例中之一或多者的處理器。
在另一實例中,方法包含:識別具有用以指示依序處置之指引指示符的第一變數;識別碼區塊中與第一變數相關聯之載入/儲存指令之運算元;將載入/儲存指令轉譯為藉由第一機器碼編碼之依序載入/儲存指令,以使得能夠藉由處理器之執行邏輯來執行第一機器碼;及將第一機器碼儲存於目的地儲存器中。
在一實例中,該方法進一步包含將第二載入/儲存指令轉譯為由第二機器碼編碼之無序載入/儲存指令,該第二載入/儲存指令不具有與用指引指示符標記之變數相關聯之運算元。
在一實例中,該指引指示符包含在用於該運算元之變數宣告中之變數指引。
在一實例中,該指引指示符包含該變數宣告之前綴。
在一實例中,該方法進一步包含將依序載入/儲存指令排序在與運算元相關聯之第二依序載入/儲存指令之前,該第二依序載入/儲存指令按程式次序在該載入/儲存指令之後。
在一實例中,該依序載入/儲存指令包含至裝置觸發暫存器之寫入,且該第二依序載入/儲存指令包含對於裝置狀態暫存器之讀取或寫入。
在一實例中,方法進一步包含將一或多個無序載入/儲存指令排序在依序載入/儲存指令之前。
在一實例中,運算元包含記憶體映射輸入/輸出位置。
在一實例中,方法進一步包含將碼區塊之第三依序載入/儲存指令排序在依序載入/儲存指令之前,該第三依序載入/儲存指令按程式次序在該序載入/儲存指令之後並與不同於該依序載入/儲存指令之運算元不同之運算元相關聯。
在另一實例中,一種包括指令之電腦可讀媒體執行以上實例之任一者的方法。
在另一實例中,一種包括資料之電腦可讀媒體應由至少一機器使用以製造至少一積體電路來進行以上實例中之任一者的方法。
在另一實例中,一種設備包含用於進行以上實例中之任一實例的方法之構件。
在另一實例中,系統包含:處理器,其包括第一核心,該第一核心具有:用以解碼指令之解碼邏輯;用以發出經解碼指令之發出邏輯,該發出邏輯包括用以儲存依序記憶體存取指令之第一佇列及用以儲存無序指令第二儲存器;及用以執行程式之經發出指令之至少一個執行邏輯,其中該發出邏輯用以將程式之經解碼第一依序記憶體存取指令及程式之經解碼第二依序記憶體存取指令儲存於該第一佇列中並將該程式之一或多個無序指令儲存於該第二儲存器中,且將該經解碼第一依序記憶體存取指令在該程式之經解碼第二依序記憶體存取指令之前且相對於該一或多個無序指令中之一或多者無序地提供至該至少一個執行邏輯。該系統可進一步包括耦接至處理器之動態隨機存取記憶體。
在一實例中,編譯器邏輯用以至少部分地基於與無序記憶體存取指令之至少一個運算元相關聯之識別符自無序記憶體存取指令產生該第一依序記憶體存取指令,該第一依序記憶體存取指令具有與用於無序記憶體存取指令之機器碼不同的機器碼。
在一實例中,至少一個運算元包含在該程式期間待存取之一記憶體映射輸入/輸出位置,該程式包含用於嵌入式控制器之裝置驅動程式,其中該第一核心包含亂序管線。
在另一實例中,一種設備包含:用於識別具有用以指示依序處置之指引指示符的第一變數的構件;用於識別碼區塊中與第一變數相關聯之載入/儲存指令之運算元的構件;用於將載入/儲存指令轉譯為藉由第一機器碼編碼之依序載入/儲存指令以使得能夠藉由該設備之執行構件來執行第一機器碼的構件;以及用於將第一機器碼儲存於目的地儲存構件中的構件。
在一實例中,該設備進一步包含用於將第二載入/儲存指令轉譯為由第二機器碼編碼之無序載入/儲存指令的構件,該第二載入/儲存指令不具有與用指引指示符標記之變數相關聯之運算元。
實施例可用於許多不同類型之系統中。舉例而言,在一個實施例中,通訊裝置可經配置以執行本文中所描述之各種方法及技術。當然,本發明之範疇並非限於通訊裝置,且實情為其他實施例可係針對用於處理指令的其他類型之設備,或包括回應於在計算裝置上執行而使得裝置進行本文中所描述之方法及技術中之一或多者的指令之一或多個機器可讀媒體。
實施例可以程式碼實施,且可儲存於其上已儲存有指令的非暫時性儲存媒體上,該等指令可用以程式系統以執行指令。實施例亦可實施於資料中,且可儲存於非暫時性儲存媒體上,其在由至少一機器使用之情況下使得至少一個機器製造至少一積體電路進行一或多個操作。另外的其他實施例可實施於包括資訊之電腦可讀儲存媒體中,該電腦可讀儲存媒體可在製造成SoC或其他處理器時將對SoC或其他處理器進行組配以執行一或多個操作。儲存媒體可包括(但不限於)任何類型之磁碟,包括軟碟、光碟、固態硬碟(SSD)、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)及磁光碟;諸如唯讀記憶體(ROM)之半導體裝置;隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM);磁性或光學卡;或適於儲存電子指令的任何其他類型之媒體。
雖然已關於有限數目個實施例描述本發明,但熟習此項技術者將瞭解自本發明之眾多修改及變化。希望隨附申請專利範圍涵蓋如屬於本發明之真實精神及範疇內的所有此等修改及變化。
100、600、700‧‧‧系統 102、200、500、610、615、770、780、1000、1215、1314、1316、1710、2300‧‧‧處理器 104、167、230、476、506、572、574、1410、1525‧‧‧快取記憶體 106、145、164、208、210‧‧‧暫存器檔案 108、142、162、212、214、216、218、220、222、224、462、2330‧‧‧執行單元 109、143‧‧‧封裝指令集 110‧‧‧處理器匯流排 112‧‧‧圖形控制器 114‧‧‧加速圖形埠(AGP)互連 116‧‧‧系統邏輯晶片 118‧‧‧高頻寬記憶體路徑/記憶體介面 120、640、732、734‧‧‧記憶體 122‧‧‧系統I/O 124‧‧‧資料儲存器 126‧‧‧無線收發器 128‧‧‧韌體集線器(快閃BIOS) 130、650‧‧‧I/O控制器集線器(ICH) 134‧‧‧網路控制器 140、160‧‧‧資料處理系統/電腦系統 141‧‧‧匯流排 144、165、228‧‧‧解碼器 146‧‧‧同步動態隨機存取記憶體(SDRAM)控制件 147‧‧‧靜態隨機存取記憶體(SRAM)控制件 148‧‧‧叢發快閃記憶體介面 149‧‧‧個人電腦記憶卡國際協會(PCMCIA)/緊密快閃記憶體(CF)卡控制件 150‧‧‧液晶顯示器(LCD)控制件 151‧‧‧直接記憶體存取(DMA)控制器 152‧‧‧匯流排主控介面 153‧‧‧I/O匯流排 154‧‧‧I/O橋接器 155‧‧‧通用異步接收器/傳輸器(UART) 156‧‧‧通用串列匯流排(USB) 157‧‧‧藍芽無線UART 158‧‧‧I/O擴充介面 159、170‧‧‧處理核心 161‧‧‧SIMD共處理器 163‧‧‧指令集 166‧‧‧主處理器 168‧‧‧輸入/輸出系統 169‧‧‧無線介面 201、570‧‧‧前端 202、204、206‧‧‧微操作排程器 203、580‧‧‧亂序執行引擎 211‧‧‧執行區塊 226‧‧‧指令預取器 228‧‧‧指令解碼器 232‧‧‧微碼ROM 234‧‧‧uop佇列 310‧‧‧封裝位元組 320‧‧‧封裝字格式 330‧‧‧封裝雙字格式 341‧‧‧封裝半 342‧‧‧封裝單 343‧‧‧封裝雙 344‧‧‧無正負號封裝位元組表示 345‧‧‧有正負號封裝位元組表示 346‧‧‧無正負號封裝字表示 347‧‧‧有正負號封裝字表示 348‧‧‧無正負號封裝雙字表示 349‧‧‧有正負號封裝雙字表示 360、370、380‧‧‧作業碼格式 361、362、362、371、372、373、381、382、383、384、387、388、389‧‧‧欄位 364、365、366、374、375、376、385、386、390‧‧‧運算元識別符 378‧‧‧前綴位元組 400‧‧‧處理器管線 402‧‧‧提取階段 404‧‧‧長度解碼階段 406‧‧‧解碼階段 408‧‧‧分配階段 410‧‧‧重命名階段 412‧‧‧排程階段 414‧‧‧暫存器讀取/記憶體讀取階段 416‧‧‧執行階段 418‧‧‧寫回/記憶體寫入階段 422‧‧‧例外狀況處置階段 424‧‧‧提交階段 430‧‧‧前端單元 432、1535‧‧‧分支預測單元 434‧‧‧指令快取單元 436‧‧‧指令轉譯後援緩衝器(TLB) 438‧‧‧指令提取單元 440、2310‧‧‧解碼單元 450‧‧‧執行引擎單元 452‧‧‧重命名/分配器單元 454‧‧‧引退單元 456‧‧‧排程器單元 458‧‧‧實體暫存器檔案單元 460‧‧‧執行叢集 464‧‧‧記憶體存取單元 470‧‧‧記憶體單元 472‧‧‧資料TLB單元 474‧‧‧資料快取單元 490‧‧‧處理器核心 502、502A、502N、1406、1407‧‧‧核心 503‧‧‧快取記憶體階層 506‧‧‧共用快取記憶體單元 508、902‧‧‧互連單元 510‧‧‧系統代理 512‧‧‧顯示引擎 516‧‧‧直接媒體介面(DMI) 552‧‧‧記憶體控制單元 560‧‧‧圖形模組 565‧‧‧媒體引擎 582‧‧‧分配模組 584‧‧‧資源排程器 586‧‧‧資源 588‧‧‧重排序緩衝器 590‧‧‧模組 595‧‧‧LLC 620‧‧‧圖形記憶體控制器集線器 645、1724‧‧‧顯示器 660‧‧‧外部圖形裝置 670‧‧‧周邊裝置 695‧‧‧前側匯流排(FSB) 714、814、815‧‧‧I/O裝置 716‧‧‧第一匯流排 718‧‧‧匯流排橋接器 720‧‧‧第二匯流排 722‧‧‧鍵盤及/或滑鼠 724‧‧‧音訊I/O 727‧‧‧通訊裝置 728‧‧‧儲存單元 730‧‧‧資料 738‧‧‧高效能圖形電路 739‧‧‧高效能圖形介面 750‧‧‧點對點互連件 752、754、786、788‧‧‧P-P介面 772、782、872、882、914‧‧‧整合式記憶體控制器單元/控制邏輯 776、778、794、798‧‧‧點對點(P-P)介面電路 790‧‧‧晶片組 796、1214‧‧‧介面 815‧‧‧舊式I/O裝置 900‧‧‧SoC 908‧‧‧整合式圖形邏輯 910‧‧‧應用程式處理器 912‧‧‧系統代理單元 916‧‧‧匯流排控制器單元 920‧‧‧媒體處理器 924、1015‧‧‧影像處理器 926、1020‧‧‧音訊處理器 928‧‧‧視訊處理器 930‧‧‧靜態隨機存取記憶體(SRAM)單元 932‧‧‧直接記憶體存取(DMA)單元 940‧‧‧顯示單元 1005‧‧‧中央處理單元 1010、1415‧‧‧圖形處理單元 1025‧‧‧USB控制器 1030‧‧‧UART控制器 1035‧‧‧SPI/SDIO控制器 1040‧‧‧顯示裝置 1045‧‧‧記憶體介面控制器 1050‧‧‧MIPI控制器 1055‧‧‧快閃記憶體控制器 1060‧‧‧雙資料速率(DDR)控制器 1065‧‧‧安全引擎 1070‧‧‧I2 S/I2 C控制器 1205‧‧‧程式 1210‧‧‧仿真邏輯 1218‧‧‧PCIe橋接器 1220‧‧‧記憶體控制器 1222‧‧‧同調邏輯 1302‧‧‧高級語言 1304‧‧‧x86編譯器 1306‧‧‧x86二進位程式碼 1308‧‧‧替代指令集編譯器 1310、1311‧‧‧替代指令集二進位程式碼 1312‧‧‧指令轉換器 1400、1500‧‧‧指令集架構 1408‧‧‧L2快取控制件 1409、1520‧‧‧匯流排介面單元 1410‧‧‧互連件 1420‧‧‧視訊程式碼 1425‧‧‧液晶顯示器(LCD)視訊介面 1430‧‧‧用戶介面模組(SIM)介面 1435‧‧‧啟動ROM介面 1440‧‧‧同步動態隨機存取記憶體(SDRAM)控制器 1445‧‧‧快閃控制器 1450‧‧‧串列周邊介面(SPI)主控單元 1470‧‧‧藍芽模組 1475‧‧‧高速3G數據機 1480‧‧‧全球定位系統模組 1485‧‧‧無線模組 1490‧‧‧行動產業處理器介面(MIPI) 1495‧‧‧高清晰度多媒體介面(HDMI) 1510‧‧‧快取及匯流排介面單元 1511‧‧‧中斷控制及分佈單元 1512‧‧‧窺探控制單元 1515‧‧‧計時器 1516‧‧‧AC埠 1530‧‧‧指令預取階段/載入儲存單元 1531‧‧‧選項 1532‧‧‧指令快取記憶體 1536‧‧‧全域歷史 1537‧‧‧目標位址 1538‧‧‧返回堆疊 1540‧‧‧記憶體系統 1543‧‧‧預取器 1544‧‧‧記憶體管理單元(MMU) 1545‧‧‧轉譯後援緩衝器(TLB) 1550‧‧‧雙指令解碼階段 1555‧‧‧暫存器重命名階段 1556‧‧‧暫存器集區 1557‧‧‧分支 1560‧‧‧發出階段 1561‧‧‧指令佇列 1565‧‧‧執行實體 1570‧‧‧寫回階段 1575‧‧‧追蹤單元 1582‧‧‧引退指標 1566、1567‧‧‧ALU/乘法單元(MUL) 1568‧‧‧浮點單元(FPU) 1569‧‧‧給定位址 1600‧‧‧執行管線 1605、1610、1615、1620、1625、1630、1640、1650、1655、1660、1665、1670、1675、16800‧‧‧步驟/操作 1700‧‧‧電子裝置 1715‧‧‧低功率雙資料速率(LPDDR)記憶體單元 1720‧‧‧碟機 1722‧‧‧BIOS/韌體/快閃記憶體 1725‧‧‧觸控螢幕 1730‧‧‧觸控板 1735‧‧‧高速晶片組(EC) 1737‧‧‧風扇 1738‧‧‧受信任平台模組(TPM) 1739‧‧‧熱感測器 1740‧‧‧感測器集線器 1741‧‧‧加速度計 1742‧‧‧環境光感測器(ALS) 1743‧‧‧羅盤 1744‧‧‧陀螺儀 1745‧‧‧近場通訊(NFC)單元 1746‧‧‧熱感測器/鍵盤 1750‧‧‧無線區域網路(WLAN)單元 1752‧‧‧藍芽單元 1754‧‧‧攝影機 1756‧‧‧無線廣域網路(WWAN)單元 1757‧‧‧SIM卡 1760‧‧‧數位信號處理器 1763‧‧‧揚聲器 1764‧‧‧頭戴式耳機/音訊單元 1765‧‧‧麥克風 1810、1820、1830、1840、1910、1920、1940、1960、1970、1980、1990、2030、2040、2050、2110、2130、2140、2240、2250‧‧‧區塊 2000‧‧‧方法 1930、1950、2010、2020、2120、2210、2220、2230‧‧‧菱形 2322、2324‧‧‧儲存器
圖1A為根據本發明之實施例的例示性電腦系統之方塊圖,該電腦系統經形成有可包括用以執行指令之執行單元的處理器。
圖1B說明根據本發明之實施例的資料處理系統。
圖1C說明根據本發明之實施例的用以執行操作之資料處理系統之另一實施例。
圖2為根據本發明之實施例的用於可包括用以執行指令之邏輯電路之處理器的微型架構之方塊圖。
圖3A說明根據本發明之實施例的多媒體暫存器中之各種封裝資料類型表示。
圖3B說明根據本發明之實施例的可能暫存器內資料儲存格式。
圖3C說明根據本發明之實施例的多媒體暫存器中之各種有正負號及無正負號的封裝資料類型表示。
圖3D說明操作編碼格式之一實施例。
圖3E說明根據本發明之實施例的具有四十或更多位元之另一可能操作編碼格式。
圖3F說明根據本發明之實施例的又一可能操作編碼格式。
圖4A為說明根據本發明之實施例的有序管線及暫存器重命名階段、亂序發出/執行管線之方塊圖。
圖4B為說明根據本發明之實施例的待包括於處理器中之有序架構核心及暫存器重命名邏輯、亂序發出/執行邏輯之方塊圖。
圖5A為根據本發明之實施例的處理器之方塊圖。
圖5B為根據本發明之實施例的核心之一實例實施之方塊圖。
圖6為根據本發明之實施例的系統之方塊圖。
圖7為根據本發明之實施例的第二系統之方塊圖。
圖8為根據本發明之實施例的第三系統之方塊圖。
圖9為根據本發明之實施例的系統單晶片之方塊圖。
圖10說明根據本發明之實施例的含有中央處理單元及圖形處理單元之處理器,其可執行至少一個指令。
圖11為說明根據本發明之實施例的IP核心之開發之方塊圖。
圖12說明根據本發明之實施例的第一類型之指令可如何由不同類型之處理器進行仿真。
圖13說明根據本發明之實施例的對比軟體指令轉換器之使用的方塊圖,該軟體指令轉換器用以將源指令集中之二進位指令轉換成目標指令集中之二進位指令。
圖14為根據本發明之實施例的處理器之指令集架構之方塊圖。
圖15為根據本發明之實施例的處理器之指令集架構之更詳細方塊圖。
圖16為根據本發明之實施例的用於處理器之指令集架構之執行管線之方塊圖。
圖17為根據本發明之實施例的用於利用處理器之電子裝置之方塊圖。
圖18為根據本發明之實施例的方法之流程圖。
圖19為根據本發明之另一實施例的方法之流程圖。
圖20為根據實施例之用於編譯器執行之方法的流程圖。
圖21為根據本發明之實施例的用於解碼指令之方法的流程圖。
圖22為根據本發明之實施例的方法之流程圖。
圖23為根據實施例之處理器之一部分的方塊圖。
100‧‧‧系統
102‧‧‧處理器
104‧‧‧快取記憶體
106‧‧‧暫存器檔案
108‧‧‧執行單元
109‧‧‧封裝指令集
110‧‧‧處理器匯流排
112‧‧‧圖形/視訊卡
114‧‧‧加速圖形埠(AGP)互連
116‧‧‧記憶體控制器集線器
118‧‧‧記憶體介面
120‧‧‧記憶體
122‧‧‧系統I/O
124‧‧‧資料儲存器
126‧‧‧無線收發器
128‧‧‧快閃BIOS
130‧‧‧I/O控制器集線器
134‧‧‧網路控制器

Claims (22)

  1. 一種處理器,其包含: 一包含一亂序管線之核心,該亂序管線包括一解碼邏輯、一發出經解碼指令之發出邏輯,及執行一程式之經發出指令之至少一個執行邏輯,其中該至少一個執行邏輯用以亂序執行該程式之至少一些指令,該解碼邏輯用以解碼該程式之一第一依序記憶體指令並將該經解碼第一依序記憶體指令提供至該發出邏輯,該發出邏輯用以將該第一依序記憶體指令排序在該程式之一第二依序記憶體指令之前,該第一依序記憶體指令為該程式之一源版本中之一無序指令。
  2. 如請求項1之處理器,其中該第一依序記憶體指令用以實現對於該程式之一記憶體映射輸入/輸出存取,其中該程式包含一嵌入式控制應用程式。
  3. 如請求項1之處理器,其中該第一依序記憶體指令及該第二依序記憶體指令包含記憶體映射輸入/輸出操作。
  4. 如請求項1之處理器,其中該發出邏輯用於以高於該第二依序記憶體指令之一優先權將該第一依序記憶體指令發出至該執行邏輯。
  5. 如請求項1之處理器,其中一編譯器邏輯用以至少部分地基於與該無序記憶體指令之至少一個運算元相關聯之一識別符自該程式之該無序記憶體指令產生該第一依序記憶體指令。
  6. 如請求項5之處理器,其中該編譯器邏輯用以產生具有一與該無序記憶體指令之機器碼不同的機器碼之該第一依序記憶體指令。
  7. 如請求項5之處理器,其中該編譯器邏輯用以回應於一變數宣告之一指引指示符而產生該第一依序記憶體指令,其中該無序記憶體指令之一運算元對應於該變數宣告之一變數。
  8. 如請求項1之處理器,其中該發出邏輯包含: 一第一儲存器,用以儲存待決依序記憶體指令;及 一第二儲存器,用以儲存待決無序指令。
  9. 如請求項8之處理器,其中該解碼邏輯用以將該第一依序記憶體指令提供至該發出邏輯之第一儲存器,該第一儲存器包含第一先進先出佇列。
  10. 如請求項1之處理器,其中該執行邏輯包含用以執行該第一依序記憶體指令之至少一個載入/儲存執行單元。
  11. 一種其上儲存有資料的機器可讀媒體,該資料如果由至少一機器使用,使得該至少一機器製造至少一積體電路以進行一方法,該方法包含: 識別具有用以指示依序處置之一指引指示符之一第一變數; 識別一碼區塊中與該第一變數相關聯之一載入/儲存指令之一運算元; 將該載入/儲存指令轉譯為由一第一機器碼編碼之一依序載入/儲存指令,以使得能夠由一處理器之一執行邏輯來執行該第一機器碼;及 將該第一機器碼儲存於一目的地儲存器中。
  12. 如請求項11之機器可讀媒體,其中該方法進一步包含將一第二載入/儲存指令轉譯為由一第二機器碼編碼之一無序載入/儲存指令,該第二載入/儲存指令不具有與用一指引指示符來標記之一變數相關聯的一運算元。
  13. 如請求項11之機器可讀媒體,其中該指引指示符包含在一對於該運算元之變數宣告中之一變數指引。
  14. 如請求項13之機器可讀媒體,其中該指引指示符包含該變數宣告之一前綴。
  15. 如請求項11之機器可讀媒體,其中該方法進一步包含將該依序載入/儲存指令排序在與該運算元相關聯之一第二依序載入/儲存指令之前,該第二依序載入/儲存指令按程式次序在該載入/儲存指令之後。
  16. 如請求項15之機器可讀媒體,其中該依序載入/儲存指令包含對一裝置觸發暫存器之一寫入,且該第二依序載入/儲存指令包含對於一裝置狀態暫存器之一讀取或一寫入。
  17. 如請求項15之機器可讀媒體,其中該方法進一步包含將一或多個無序載入/儲存指令排序在該依序載入/儲存指令之前。
  18. 如請求項11之機器可讀媒體,其中該運算元包含一記憶體映射輸入/輸出位置。
  19. 如請求項11之機器可讀媒體,其中該方法進一步包含將該碼區塊之一第三依序載入/儲存指令排序在該依序載入/儲存指令之前,該第三依序載入/儲存指令按程式次序在該依序載入/儲存指令之後,並與不同於該依序載入/儲存指令之運算元之一運算元相關聯。
  20. 一種系統,包含: 一處理器,其包括一第一核心,該第一核心具有: 一用以解碼指令之解碼邏輯; 一用以發出經解碼指令之發出邏輯,該發出邏輯包括一第一佇列用以儲存依序記憶體存取指令及一第二儲存器用以儲存無序指令;及 至少一個執行邏輯,用以執行一程式之經發出指令,其中該發出邏輯用以將該程式之一經解碼第一依序記憶體存取指令及該程式之一經解碼第二依序記憶體存取指令儲存於該第一佇列中,並將該程式之一或多個無序指令儲存於該第二儲存器中,以及將該經解碼第一依序記憶體存取指令在該程式之該經解碼第二依序記憶體存取指令之前且相對於該一或多個無序指令中之一或多者無序地提供至該至少一個執行邏輯;以及 一動態隨機存取記憶體,其耦接至該處理器。
  21. 如請求項20之系統,其中一編譯器邏輯用以至少部分地基於與該無序記憶體存取指令之至少一個運算元相關聯之一識別符自一無序記憶體存取指令產生該第一依序記憶體存取指令,該第一依序記憶體存取指令具有不同於該無序記憶體存取指令之機器碼的一機器碼。
  22. 如請求項21之系統,其中該至少一個運算元包含要在該程式期間被存取之一記憶體映射輸入/輸出位置,該程式包含用於一嵌入式控制器之一裝置驅動程式,其中該第一核心包含一亂序管線。
TW105134693A 2015-11-30 2016-10-27 用於亂序處理器中依序處置之指令與邏輯 TW201723856A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/953,644 US10191748B2 (en) 2015-11-30 2015-11-30 Instruction and logic for in-order handling in an out-of-order processor

Publications (1)

Publication Number Publication Date
TW201723856A true TW201723856A (zh) 2017-07-01

Family

ID=58777588

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105134693A TW201723856A (zh) 2015-11-30 2016-10-27 用於亂序處理器中依序處置之指令與邏輯

Country Status (5)

Country Link
US (2) US10191748B2 (zh)
EP (1) EP3384378B1 (zh)
CN (1) CN108351784B (zh)
TW (1) TW201723856A (zh)
WO (1) WO2017095515A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI743611B (zh) * 2019-12-04 2021-10-21 新唐科技股份有限公司 處理裝置與其資料存取方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US11061742B2 (en) 2018-06-27 2021-07-13 Intel Corporation System, apparatus and method for barrier synchronization in a multi-threaded processor
US10936321B2 (en) * 2019-02-01 2021-03-02 International Business Machines Corporation Instruction chaining
US10956160B2 (en) * 2019-03-27 2021-03-23 Intel Corporation Method and apparatus for a multi-level reservation station with instruction recirculation
CN113127064B (zh) * 2019-12-31 2025-02-14 深圳云天励飞技术有限公司 一种并发调度和执行时序数据的方法及相关装置
US20210389979A1 (en) * 2020-06-15 2021-12-16 Andes Technology Corporation Microprocessor with functional unit having an execution queue with priority scheduling
CN111966406B (zh) * 2020-08-06 2021-03-23 北京微核芯科技有限公司 乱序处理器中乱序执行队列的调度方法和装置
CN111930427B (zh) * 2020-08-17 2022-06-21 北京百度网讯科技有限公司 指令发射方法、装置、电子设备以及存储介质
US12020064B2 (en) * 2020-10-20 2024-06-25 Micron Technology, Inc. Rescheduling a failed memory request in a processor
US12067428B2 (en) * 2020-12-21 2024-08-20 Intel Corporation Thread synchronization mechanism
US20220374237A1 (en) * 2021-05-21 2022-11-24 Telefonaktiebolaget Lm Ericsson (Publ) Apparatus and method for identifying and prioritizing certain instructions in a microprocessor instruction pipeline
US20220413860A1 (en) * 2021-06-25 2022-12-29 Intel Corporation System, Apparatus And Methods For Minimum Serialization In Response To Non-Serializing Register Write Instruction

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100248903B1 (ko) * 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
US5467473A (en) 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
JPH07302200A (ja) * 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
US6192465B1 (en) 1998-09-21 2001-02-20 Advanced Micro Devices, Inc. Using multiple decoders and a reorder queue to decode instructions out of order
US8447911B2 (en) 2007-07-05 2013-05-21 Board Of Regents, University Of Texas System Unordered load/store queue
US8769539B2 (en) 2010-11-16 2014-07-01 Advanced Micro Devices, Inc. Scheduling scheme for load/store operations
US9164772B2 (en) * 2011-02-04 2015-10-20 Qualcomm Incorporated Hybrid queue for storing instructions from fetch queue directly in out-of-order queue or temporarily in in-order queue until space is available
US9110656B2 (en) 2011-08-16 2015-08-18 Freescale Semiconductor, Inc. Systems and methods for handling instructions of in-order and out-of-order execution queues
US9582276B2 (en) * 2012-09-27 2017-02-28 Apple Inc. Processor and method for implementing barrier operation using speculative and architectural color values
US9563425B2 (en) * 2012-11-28 2017-02-07 Intel Corporation Instruction and logic to provide pushing buffer copy and store functionality
US9354884B2 (en) * 2013-03-13 2016-05-31 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
GB2510655B (en) * 2013-07-31 2015-02-25 Imagination Tech Ltd Prioritizing instructions based on type
US9547496B2 (en) * 2013-11-07 2017-01-17 Microsoft Technology Licensing, Llc Energy efficient multi-modal instruction issue

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI743611B (zh) * 2019-12-04 2021-10-21 新唐科技股份有限公司 處理裝置與其資料存取方法

Also Published As

Publication number Publication date
CN108351784A (zh) 2018-07-31
US20170153896A1 (en) 2017-06-01
CN108351784B (zh) 2023-04-11
EP3384378A1 (en) 2018-10-10
US10191748B2 (en) 2019-01-29
EP3384378A4 (en) 2019-07-31
EP3384378B1 (en) 2022-02-09
WO2017095515A1 (en) 2017-06-08
US20190121645A1 (en) 2019-04-25

Similar Documents

Publication Publication Date Title
TWI739772B (zh) 處理器、用於安全指令執行管線之方法、及運算系統
EP3384378B1 (en) Instruction and logic for in-order handling in an out-of-order processor
JP6306729B2 (ja) ストアをソート及びリタイアする命令及びロジック
TWI721021B (zh) 用於致能旗標操作的移除及重建之處理器、非暫時性機器可讀取媒體及計算系統
TWI773654B (zh) 處理器、運算系統及用於執行以向量為基礎的位元操控之方法
TWI588740B (zh) 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法
CN108292271B (zh) 用于向量置换的指令和逻辑
TW201723855A (zh) 用於快取控制操作之指令及邏輯
CN106575219B (zh) 针对用于处理运算的向量格式的指令和逻辑技术领域
TWI729029B (zh) 用於向量位元欄壓縮及擴展的指令及邏輯
CN108369518A (zh) 用于位字段寻址和插入的指令和逻辑
CN108292232A (zh) 用于加载索引和分散操作的指令和逻辑
US20170168819A1 (en) Instruction and logic for partial reduction operations
TW201732619A (zh) 仿真的訊息通知中斷(msi)中斷處置
US20180004526A1 (en) System and Method for Tracing Data Addresses
CN105723329B (zh) 用于识别多指令串无序处理器中引退的指令的方法和设备
TWI738681B (zh) 處理器、用於檢測消抵效應之方法及消抵效應檢測單元
CN106030520A (zh) 用于软件预获取指令的过滤的指令和逻辑
CN108292214A (zh) 用于获得数据列的指令和逻辑
CN108292216A (zh) 用于压缩和循环的指令和逻辑
CN107408035B (zh) 用于缕程间通信的装置和方法